You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by da...@apache.org on 2007/07/15 22:20:25 UTC
svn commit: r556442 - in /maven/plugins/trunk/maven-eclipse-plugin: ./
src/main/java/org/apache/maven/plugin/eclipse/
src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/
src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/ src/main/j...
Author: dantran
Date: Sun Jul 15 13:20:23 2007
New Revision: 556442
URL: http://svn.apache.org/viewvc?view=rev&rev=556442
Log:
MECLIPSE-129&296. Add eclipse:configure-workspace goal
Added:
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AbstractWorkspaceMojo.java
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/ConfigureWorkspaceMojo.java
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterProfile.java
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseWorkspaceWriter.java
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceConfiguration.java
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceWriter.java
maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/examples/load-code-styles.apt
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipseWorkspaceTest.java
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/writers/workspace/
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterTest.java
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/expected/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/expected/.metadata/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/expected/.metadata/.plugins/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/expected/.metadata/.plugins/org.eclipse.core.runtime/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/expected/.metadata/.plugins/org.eclipse.core.runtime/.settings/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/pom.xml
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/code-styles.xml
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/org.eclipse.core.runtime/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/org.eclipse.core.runtime/.settings/
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/pom.xml
Modified:
maven/plugins/trunk/maven-eclipse-plugin/pom.xml
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojo.java
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpComponentWriter.java
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/index.apt
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java
maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojoTest.java
maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-28/module-1/pom.xml
Modified: maven/plugins/trunk/maven-eclipse-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/pom.xml?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/pom.xml Sun Jul 15 13:20:23 2007
@@ -30,7 +30,8 @@
<artifactId>maven-eclipse-plugin</artifactId>
<packaging>maven-plugin</packaging>
<name>Maven Eclipse Plugin</name>
- <version>2.5-SNAPSHOT</version>
+ <version>2.5-555344</version>
+ <description>Eclipse 2.5 SNAPSHOT at rev 555344 with fixes for the unapprove MECLIPSE-127 and MECLIPSE-296</description>
<prerequisites>
<maven>2.0.1</maven>
</prerequisites>
@@ -170,4 +171,23 @@
<version>0.0.145</version>
</dependency>
</dependencies>
+
+ <distributionManagement>
+ <site>
+ <id>iplocks.site</id>
+ <name>IPLocks Maven Site</name>
+ <url>file:///\\\\scm.iplocks.com/site</url>
+ </site>
+ <repository>
+ <id>iplocks.releases</id>
+ <name>IPLocks Release Distribution Repository</name>
+ <url>file:///\\\\scm.iplocks.com/maven-repositories/interim</url>
+ </repository>
+ <snapshotRepository>
+ <id>iplocks.snapshots</id>
+ <name>IPlocks Development Snapshot Repository</name>
+ <url>file:///\\\\scm.iplocks.com/maven-repositories/snapshot</url>
+ </snapshotRepository>
+ </distributionManagement>
+
</project>
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AbstractWorkspaceMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AbstractWorkspaceMojo.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AbstractWorkspaceMojo.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AbstractWorkspaceMojo.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.plugin.eclipse;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.plugin.AbstractMojo;
+
+/**
+ *
+ * @requiresProject true
+ */
+public abstract class AbstractWorkspaceMojo
+ extends AbstractMojo
+{
+
+ /**
+ * Directory location of the <code>Eclipse</code> workspace.
+ *
+ * @parameter expression="${eclipse.workspace}"
+ * @required
+ */
+ private String workspace;
+
+ /**
+ * @parameter expression="${localRepository}"
+ * @required
+ * @readonly
+ */
+ private ArtifactRepository localRepository;
+
+ public ArtifactRepository getLocalRepository()
+ {
+ return localRepository;
+ }
+
+ public void setLocalRepository( ArtifactRepository localRepository )
+ {
+ this.localRepository = localRepository;
+ }
+
+ public String getWorkspace()
+ {
+ return workspace;
+ }
+
+ public void setWorkspace( String workspace )
+ {
+ this.workspace = workspace;
+ }
+}
Modified: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojo.java?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojo.java (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojo.java Sun Jul 15 13:20:23 2007
@@ -19,131 +19,28 @@
package org.apache.maven.plugin.eclipse;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Properties;
-
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.eclipse.writers.workspace.EclipseWorkspaceWriter;
+import org.apache.maven.plugin.eclipse.writers.workspace.WorkspaceConfiguration;
/**
* Adds the classpath variable MAVEN_REPO to Eclipse.
*
* @goal add-maven-repo
* @requiresProject false
+ * @deprecated Use configure-workspace goal instead.
*/
public class AddMavenRepoMojo
- extends AbstractMojo
+ extends AbstractWorkspaceMojo
{
-
- /**
- * Path under Eclipse workspace where Eclipse Plugin metadata/config is
- * stored.
- */
- public static final String DIR_ECLIPSE_PLUGINS_METADATA = ".metadata/.plugins"; //$NON-NLS-1$
-
- /**
- * Path under {@value #DIR_ECLIPSE_PLUGINS_METADATA } folder where Eclipse
- * Workspace Runtime settings are stored.
- */
- public static final String DIR_ECLIPSE_CORE_RUNTIME_SETTINGS = DIR_ECLIPSE_PLUGINS_METADATA
- + "/org.eclipse.core.runtime/.settings"; //$NON-NLS-1$
-
- /**
- * File that stores the Eclipse JDT Core preferences.
- */
- public static final String FILE_ECLIPSE_JDT_CORE_PREFS = "org.eclipse.jdt.core.prefs"; //$NON-NLS-1$
-
- /**
- * Property constant under which Variable 'M2_REPO' is setup.
- */
- public static final String CLASSPATH_VARIABLE_M2_REPO = "org.eclipse.jdt.core.classpathVariable.M2_REPO"; //$NON-NLS-1$
-
- /**
- * Location of the <code>Eclipse</code> workspace that holds your
- * configuration and source. On Windows, this will be the
- * <code>workspace</code> directory under your eclipse installation. For
- * example, if you installed eclipse into <code>c:\eclipse</code>, the
- * workspace is <code>c:\eclipse\workspace</code>.
- *
- * @parameter expression="${eclipse.workspace}"
- * @required
- */
- private String workspace;
-
- /**
- * @parameter expression="${localRepository}"
- * @required
- * @readonly
- */
- private ArtifactRepository localRepository;
-
public void execute()
throws MojoExecutionException
{
+ WorkspaceConfiguration config = new WorkspaceConfiguration();
+ config.setWorkspaceDirectory( new File( this.getWorkspace() ) );
+ config.setLocalRepository( this.getLocalRepository() );
- File workDir = new File( workspace, DIR_ECLIPSE_CORE_RUNTIME_SETTINGS );
- workDir.mkdirs();
-
- Properties props = new Properties();
-
- File f = new File( workDir, FILE_ECLIPSE_JDT_CORE_PREFS );
-
- // preserve old settings
- if ( f.exists() )
- {
- try
- {
- props.load( new FileInputStream( f ) );
- }
- catch ( FileNotFoundException e )
- {
- throw new MojoExecutionException( Messages
- .getString( "EclipsePlugin.cantreadfile", f.getAbsolutePath() ), e ); //$NON-NLS-1$
- }
- catch ( IOException e )
- {
- throw new MojoExecutionException( Messages
- .getString( "EclipsePlugin.cantreadfile", f.getAbsolutePath() ), e ); //$NON-NLS-1$
- }
- }
-
- props.put( CLASSPATH_VARIABLE_M2_REPO, localRepository.getBasedir() ); //$NON-NLS-1$ //$NON-NLS-2$
-
- try
- {
- OutputStream os = new FileOutputStream( f );
- props.store( os, null );
- os.close();
- }
- catch ( IOException ioe )
- {
- throw new MojoExecutionException( Messages.getString( "EclipsePlugin.cantwritetofile", //$NON-NLS-1$
- f.getAbsolutePath() ) );
- }
- }
-
- public ArtifactRepository getLocalRepository()
- {
- return localRepository;
- }
-
- public void setLocalRepository( ArtifactRepository localRepository )
- {
- this.localRepository = localRepository;
- }
-
- public String getWorkspace()
- {
- return workspace;
+ new EclipseWorkspaceWriter().init( this.getLog(), config ).write();
}
- public void setWorkspace( String workspace )
- {
- this.workspace = workspace;
- }
}
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/ConfigureWorkspaceMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/ConfigureWorkspaceMojo.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/ConfigureWorkspaceMojo.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/ConfigureWorkspaceMojo.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.maven.plugin.eclipse;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.eclipse.writers.workspace.EclipseWorkspaceWriter;
+import org.apache.maven.plugin.eclipse.writers.workspace.WorkspaceConfiguration;
+
+/**
+ * Configures The following Eclipse Workspace features:
+ * <ul>
+ * <li>Adds the classpath variable MAVEN_REPO to Eclipse.</li>
+ * <li>Optionally load Eclipse code style file via a URL.</li>
+ * </ul>
+ *
+ * @goal configure-workspace
+ * @requiresProject false
+ */
+public class ConfigureWorkspaceMojo
+ extends AbstractWorkspaceMojo
+{
+ /**
+ * Point to a URL containing code styles content.
+ *
+ * @parameter expression="${eclipse.workspaceCodeStylesURL}"
+ *
+ */
+ private String workspaceCodeStylesURL;
+
+ /**
+ * Name of a profile in <code>workspaceCodeStylesURL</code> to activate.
+ * Default is the first profile name in the code style file in <code>workspaceCodeStylesURL</code>
+ *
+ * @parameter expression="${eclipse.workspaceActiveCodeStyleProfileName}"
+ */
+ private String workspaceActiveCodeStyleProfileName;
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ WorkspaceConfiguration config = new WorkspaceConfiguration();
+ config.setWorkspaceDirectory( new File( this.getWorkspace() ) );
+ config.setLocalRepository( this.getLocalRepository() );
+
+ if ( this.workspaceCodeStylesURL != null )
+ {
+ try
+ {
+ config.setCodeStylesURL( new URL( workspaceCodeStylesURL ) );
+ }
+ catch ( MalformedURLException e )
+ {
+ throw new MojoExecutionException( e.getMessage(), e );
+ }
+
+ config.setActiveStyleProfileName( workspaceActiveCodeStyleProfileName );
+
+ }
+
+ new EclipseWorkspaceWriter().init( this.getLog(), config ).write();
+ }
+
+}
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterProfile.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterProfile.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterProfile.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterProfile.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,126 @@
+package org.apache.maven.plugin.eclipse.writers.workspace;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.net.URL;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.eclipse.Messages;
+import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+/**
+ * an Eclipse code style file
+ *
+ * @author dtran
+ *
+ */
+
+public class EclipseCodeFormatterProfile
+{
+ private static final String ELT_PROFILES = "profiles";
+
+ private static final String ELT_PROFILE = "profile";
+
+ /**
+ * String presentation of the formatter with EOLs are escaped so that it can
+ * be embedded in a property value
+ */
+ private String content;
+
+ private String profileName;
+
+ public EclipseCodeFormatterProfile init( URL url, String profileName )
+ throws MojoExecutionException
+ {
+
+ this.profileName = profileName;
+
+ if ( this.profileName == null )
+ {
+ loadDefaultProfileName( url );
+ }
+
+ this.convertFormatterToString( url );
+
+
+ return this;
+ }
+
+ private void loadDefaultProfileName( URL url )
+ throws MojoExecutionException
+ {
+ Reader reader = null;
+ try
+ {
+ reader = new InputStreamReader( url.openStream() );
+ Xpp3Dom dom = Xpp3DomBuilder.build( reader );
+
+ Xpp3Dom[] existingProfiles = dom.getChildren( ELT_PROFILE );
+ if ( existingProfiles.length != 0 )
+ {
+ Xpp3Dom firstProfile = existingProfiles[0];
+ this.profileName = firstProfile.getAttribute( "name" );
+ }
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new MojoExecutionException ( Messages.getString( "EclipsePlugin.cantparseexisting", url.toString() ) ); //$NON-NLS-1$
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException ( Messages.getString( "EclipsePlugin.cantparseexisting", url.toString() ) ); //$NON-NLS-1$
+ }
+ finally
+ {
+ IOUtil.close( reader );
+ }
+ }
+
+ private void convertFormatterToString( URL url )
+ throws MojoExecutionException
+ {
+ InputStream is = null;
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+
+ try
+ {
+ is = url.openStream();
+
+ IOUtil.copy( is, os );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( Messages.getString( "EclipsePlugin.cantreadfile", url.toString() ), e ); //$NON-NLS-1$
+ }
+ finally
+ {
+ IOUtil.close( is );
+ }
+
+ content = os.toString();
+
+
+ }
+
+ public String getContent()
+ {
+ return this.content;
+ }
+
+ public String getProfileName()
+ {
+ return this.profileName;
+ }
+
+}
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseWorkspaceWriter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseWorkspaceWriter.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseWorkspaceWriter.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseWorkspaceWriter.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,156 @@
+package org.apache.maven.plugin.eclipse.writers.workspace;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.eclipse.Messages;
+import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.util.IOUtil;
+
+public class EclipseWorkspaceWriter
+ implements WorkspaceWriter
+{
+
+ /**
+ * Path under Eclipse workspace where Eclipse Plugin metadata/config is
+ * stored.
+ */
+ public static final String ECLIPSE_PLUGINS_METADATA_DIR = ".metadata/.plugins"; //$NON-NLS-1$
+
+ /**
+ * Path under {@value #ECLIPSE_PLUGINS_METADATA_DIR } folder where Eclipse
+ * Workspace Runtime settings are stored.
+ */
+ public static final String ECLIPSE_CORE_RUNTIME_SETTINGS_DIR = ECLIPSE_PLUGINS_METADATA_DIR
+ + "/org.eclipse.core.runtime/.settings"; //$NON-NLS-1$
+
+ /**
+ * File that stores the Eclipse JDT Core preferences.
+ */
+ public static final String ECLIPSE_JDT_CORE_PREFS_FILE = "org.eclipse.jdt.core.prefs"; //$NON-NLS-1$
+
+ /**
+ * Property constant under which Variable 'M2_REPO' is setup.
+ */
+ public static final String CLASSPATH_VARIABLE_M2_REPO = "org.eclipse.jdt.core.classpathVariable.M2_REPO"; //$NON-NLS-1$
+
+ /**
+ * File that stores the Eclipse JDT UI preferences.
+ */
+ public static final String ECLIPSE_JDT_UI_PREFS_FILE = "org.eclipse.jdt.ui.prefs"; //$NON-NLS-1$
+
+ private WorkspaceConfiguration config;
+
+ private Log logger;
+
+ private File workDir;
+
+ public WorkspaceWriter init( Log logger, WorkspaceConfiguration config )
+ {
+ this.logger = logger;
+ this.config = config;
+
+ workDir = new File( config.getWorkspaceDirectory(), ECLIPSE_CORE_RUNTIME_SETTINGS_DIR );
+ workDir.mkdirs();
+
+ return this;
+ }
+
+ public void write()
+ throws MojoExecutionException
+ {
+ this.writeLocalRepositoryConfiguration();
+
+ if ( config.getCodeStylesURL() != null )
+ {
+ this.writeCodeStyleConfiguration();
+ }
+ }
+
+ private void writeCodeStyleConfiguration()
+ throws MojoExecutionException
+ {
+ File f = new File( workDir, ECLIPSE_JDT_UI_PREFS_FILE );
+
+ Properties props = loadProperties( f );
+
+ EclipseCodeFormatterProfile codeFormatter = new EclipseCodeFormatterProfile()
+ .init( config.getCodeStylesURL(), config.getActiveStyleProfileName() );
+
+ if ( codeFormatter.getProfileName() != null )
+ {
+ logger.info( "Set active code style profile name: " + codeFormatter.getProfileName() );
+ props.setProperty( "formatter_profile", "_" + codeFormatter.getProfileName() );
+ }
+
+ props.setProperty( "org.eclipse.jdt.ui.formatterprofiles", codeFormatter.getContent() );
+
+ storeProperties( props, f );
+ }
+
+ private void writeLocalRepositoryConfiguration()
+ throws MojoExecutionException
+ {
+ File f = new File( workDir, ECLIPSE_JDT_CORE_PREFS_FILE );
+
+ Properties props = loadProperties( f );
+
+ props.put( CLASSPATH_VARIABLE_M2_REPO, config.getLocalRepository().getBasedir() ); //$NON-NLS-1$ //$NON-NLS-2$
+
+ storeProperties( props, f );
+ }
+
+ private static Properties loadProperties( File f )
+ throws MojoExecutionException
+ {
+ Properties props = new Properties();
+
+ // preserve old settings
+ if ( f.exists() )
+ {
+ try
+ {
+ props.load( new FileInputStream( f ) );
+ }
+ catch ( FileNotFoundException e )
+ {
+ throw new MojoExecutionException( Messages
+ .getString( "EclipsePlugin.cantreadfile", f.getAbsolutePath() ), e ); //$NON-NLS-1$
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( Messages
+ .getString( "EclipsePlugin.cantreadfile", f.getAbsolutePath() ), e ); //$NON-NLS-1$
+ }
+ }
+
+ return props;
+ }
+
+ private static void storeProperties( Properties props, File f )
+ throws MojoExecutionException
+ {
+ OutputStream os = null;
+
+ try
+ {
+ os = new FileOutputStream( f );
+ props.store( os, null );
+ }
+ catch ( IOException ioe )
+ {
+ throw new MojoExecutionException( Messages.getString( "EclipsePlugin.cantwritetofile", //$NON-NLS-1$
+ f.getAbsolutePath() ) );
+ }
+ finally
+ {
+ IOUtil.close( os );
+ }
+ }
+}
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceConfiguration.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceConfiguration.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceConfiguration.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceConfiguration.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,59 @@
+package org.apache.maven.plugin.eclipse.writers.workspace;
+
+import java.io.File;
+import java.net.URL;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+
+public class WorkspaceConfiguration
+{
+ private File workspaceDirectory;
+
+ private URL codeStylesURL;
+
+ private String activeCodeStyleProfileName;
+
+ private ArtifactRepository localRepository;
+
+ public File getWorkspaceDirectory()
+ {
+ return this.workspaceDirectory;
+ }
+
+ public void setWorkspaceDirectory( File dir )
+ {
+ this.workspaceDirectory = dir;
+ }
+
+ public URL getCodeStylesURL()
+ {
+ return this.codeStylesURL;
+ }
+
+ public void setCodeStylesURL( URL url )
+ {
+ this.codeStylesURL = url;
+ }
+
+ public String getActiveStyleProfileName()
+ {
+ return this.activeCodeStyleProfileName;
+ }
+
+ public void setActiveStyleProfileName( String name )
+ {
+ this.activeCodeStyleProfileName = name;
+ }
+
+ public ArtifactRepository getLocalRepository()
+ {
+ return localRepository;
+ }
+
+ public void setLocalRepository( ArtifactRepository localRepository )
+ {
+ this.localRepository = localRepository;
+ }
+
+}
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceWriter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceWriter.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceWriter.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/workspace/WorkspaceWriter.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,41 @@
+package org.apache.maven.plugin.eclipse.writers.workspace;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+
+/**
+ * @author Dan T. Tran
+ * @version $Id:$
+ */
+
+public interface WorkspaceWriter
+{
+ /**
+ * Init this writer.
+ * @param log mojo logger.
+ * @param config writer configuration.
+ * @return the writer instance
+ */
+ WorkspaceWriter init( Log log, WorkspaceConfiguration config );
+
+ /**
+ * Main method that should be implemented by the writer to do the work.
+ * @throws MojoExecutionException
+ */
+ void write() throws MojoExecutionException;
+}
Modified: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpComponentWriter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpComponentWriter.java?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpComponentWriter.java (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/wtp/EclipseWtpComponentWriter.java Sun Jul 15 13:20:23 2007
@@ -131,16 +131,16 @@
{
target = "/WEB-INF/classes"; //$NON-NLS-1$
- String warSourceDirectory = IdeUtils.getPluginSetting( config.getProject(), ARTIFACT_MAVEN_WAR_PLUGIN,
+ File warSourceDirectory = new File( IdeUtils.getPluginSetting( config.getProject(), ARTIFACT_MAVEN_WAR_PLUGIN,
"warSourceDirectory", //$NON-NLS-1$
- config.getProject().getBasedir()+"/src/main/webapp" ); //$NON-NLS-1$
-
+ config.getProject().getBasedir()+"/src/main/webapp" ) ); //$NON-NLS-1$
+
writeContextRoot( writer );
writer.startElement( ELT_WB_RESOURCE );
writer.addAttribute( ATTR_DEPLOY_PATH, "/" ); //$NON-NLS-1$
writer.addAttribute( ATTR_SOURCE_PATH, IdeUtils
- .toRelativeAndFixSeparator( config.getEclipseProjectDirectory(), new File( warSourceDirectory ), false ) );
+ .toRelativeAndFixSeparator( config.getEclipseProjectDirectory(), warSourceDirectory, false ) );
writer.endElement();
// @todo is this really needed?
Modified: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java Sun Jul 15 13:20:23 2007
@@ -299,6 +299,11 @@
public static String toRelativeAndFixSeparator( File basedir, File fileToAdd, boolean replaceSlashesWithDashes )
throws MojoExecutionException
{
+ if ( ! fileToAdd.isAbsolute() )
+ {
+ fileToAdd = new File( basedir, fileToAdd.getPath() );
+ }
+
String basedirpath;
String absolutePath;
Added: maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/examples/load-code-styles.apt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/examples/load-code-styles.apt?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/examples/load-code-styles.apt (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/examples/load-code-styles.apt Sun Jul 15 13:20:23 2007
@@ -0,0 +1,48 @@
+ ------
+ Loading Code Styles File
+ ------
+ Dan T. Tran
+ ------
+ 13 June 2007
+ ------
+
+
+Load Coding Styles into Workspace
+
+ External coding style file can be loaded into your Eclipse workspace via a URL.
+
+ The following example shows how set Maven code style format to a workspace
+ under your current directory.
+
++-----
+
+mvn eclipse:eclipse -Declipse.workspace=.
+ -Declipse.workspaceCodeStyleURL=http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-eclipse-plugin/src/optional/eclipse-config/maven-styles.xml
+
++-----
+
+ or in your pom.xml:
+
++-----
+<project>
+ [...]
+ <build>
+ [...]
+ <plugins>
+ [...]
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <workspace>${basedir}</workspace>
+ <workspaceCodeStylesURL>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-eclipse-plugin/src/optional/eclipse-config/maven-styles.xml</workspaceCodeStylesURL>
+ </configuration>
+ </plugin>
+ [...]
+ </plugins>
+ [...]
+ </build>
+ [...]
+</project>
++-----
+
Modified: maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/index.apt?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/index.apt (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/site/apt/index.apt Sun Jul 15 13:20:23 2007
@@ -18,7 +18,11 @@
* {{{add-maven-repo-mojo.html}eclipse:add-maven-repo}} is used to add the
classpath variable MAVEN_REPO to Eclipse which points to your local
- repository.
+ repository. This goal is deprecated, please use eclipse:configure-workspace instead
+
+ * {{{configure-workspace-mojo.html}eclipse:configure-workspace}} is used to add the
+ classpath variable MAVEN_REPO to Eclipse which points to your local repository and
+ optional to configure other workspace features.
* {{{clean-mojo.html}eclipse:clean}} is used to delete the files used by the
Eclipse IDE.
@@ -59,3 +63,6 @@
* {{{examples/provide-project-natures-and-build-commands.html}Provide Project Natures and Build Commands}}
* {{{examples/additional-facets.html}Adding additional facets}}
+
+ * {{{examples/load-code-styles.html}Load Code Style file}}
+
\ No newline at end of file
Modified: maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AbstractEclipsePluginTestCase.java Sun Jul 15 13:20:23 2007
@@ -32,6 +32,7 @@
import junit.framework.AssertionFailedError;
+import org.apache.maven.plugin.eclipse.writers.workspace.EclipseWorkspaceWriter;
import org.apache.maven.plugin.ide.IdeUtils;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.invoker.InvocationRequest;
@@ -249,6 +250,81 @@
}
+ /**
+ * Execute the eclipse:configure-workspace goal on a test project and verify generated files.
+ * @param projectName project directory
+ * @throws Exception any exception generated during test
+ */
+ protected void testWorkspace( String projectName )
+ throws Exception
+ {
+ testWorkspace( projectName, new Properties(), "configure-workspace" );
+ }
+
+ /**
+ * Execute the eclipse:configure-workspace goal on a test project and verify generated files.
+ * @param projectName project directory
+ * @throws Exception any exception generated during test
+ */
+ protected void testWorkspace( String projectName, String goal )
+ throws Exception
+ {
+ testWorkspace( projectName, new Properties(), goal );
+ }
+ /**
+ * Execute the eclipse:configure-workspace goal on a test project and verify generated files.
+ * @param projectName project directory
+ * @param properties additional properties
+ * @param cleanGoal TODO
+ * @param genGoal TODO
+ * @throws Exception any exception generated during test
+ */
+ protected void testWorkspace( String projectName, Properties properties, String genGoal )
+ throws Exception
+ {
+ File basedir = getOutputDirectory( projectName );
+
+ File pom = new File( basedir, "pom.xml" );
+
+ String pluginSpec = getPluginCLISpecification();
+
+ List goals = new ArrayList();
+
+ goals.add( pluginSpec + genGoal );
+
+ executeMaven( pom, properties, goals );
+
+ MavenProject project = readProject( pom );
+
+ String outputDirPath = IdeUtils.getPluginSetting( project, "maven-eclipse-plugin", "outputDir", null );
+ File outputDir;
+ File projectOutputDir = basedir;
+
+ if ( outputDirPath == null )
+ {
+ outputDir = basedir;
+ }
+ else
+ {
+ outputDir = new File( basedir, outputDirPath );
+ outputDir.mkdirs();
+ projectOutputDir = new File( outputDir, project.getArtifactId() );
+ }
+
+ compareDirectoryContent( basedir, projectOutputDir, EclipseWorkspaceWriter.ECLIPSE_CORE_RUNTIME_SETTINGS_DIR + "/" );
+
+ }
+
+ protected File getOutputDirectory( String projectName )
+ {
+ return getTestFile( "target/test-classes/projects/" + projectName );
+ }
+
+ protected File getTestWorkspaceWorkDirectory( String projectName )
+ {
+ return new File( this.getOutputDirectory( projectName ), ".metadata" );
+ }
+
protected void executeMaven( File pom, Properties properties, List goals )
throws TestToolsException, ExecutionFailedException
{
Modified: maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojoTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojoTest.java?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojoTest.java (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/AddMavenRepoMojoTest.java Sun Jul 15 13:20:23 2007
@@ -18,6 +18,7 @@
*/
package org.apache.maven.plugin.eclipse;
+import org.apache.maven.plugin.eclipse.writers.workspace.EclipseWorkspaceWriter;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.codehaus.plexus.PlexusTestCase;
@@ -43,16 +44,16 @@
mojo.execute();
- File workDir = new File( mojo.getWorkspace(), AddMavenRepoMojo.DIR_ECLIPSE_CORE_RUNTIME_SETTINGS );
+ File workDir = new File( mojo.getWorkspace(), EclipseWorkspaceWriter.ECLIPSE_CORE_RUNTIME_SETTINGS_DIR );
- File eclipseJDTCorePrefsFile = new File( workDir, AddMavenRepoMojo.FILE_ECLIPSE_JDT_CORE_PREFS );
+ File eclipseJDTCorePrefsFile = new File( workDir, EclipseWorkspaceWriter.ECLIPSE_JDT_CORE_PREFS_FILE );
assertTrue( "Test if workspace properties exists", eclipseJDTCorePrefsFile.exists() );
Properties props = new Properties();
props.load( new FileInputStream( eclipseJDTCorePrefsFile ) );
- String M2_REPO = props.getProperty( AddMavenRepoMojo.CLASSPATH_VARIABLE_M2_REPO );
+ String M2_REPO = props.getProperty( EclipseWorkspaceWriter.CLASSPATH_VARIABLE_M2_REPO );
assertNotNull( "Test M2_REPO has a value", M2_REPO );
Added: maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipseWorkspaceTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipseWorkspaceTest.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipseWorkspaceTest.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/EclipseWorkspaceTest.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.maven.plugin.eclipse;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Properties;
+
+import org.apache.maven.plugin.eclipse.writers.workspace.EclipseWorkspaceWriter;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+/**
+ * @version $Id: $
+ */
+public class EclipseWorkspaceTest
+ extends AbstractEclipsePluginTestCase
+{
+
+ private static final String ECLIPSE_JDT_CORE_PREFS_PATH = EclipseWorkspaceWriter.ECLIPSE_CORE_RUNTIME_SETTINGS_DIR
+ + "/" + EclipseWorkspaceWriter.ECLIPSE_JDT_CORE_PREFS_FILE;
+
+ private static final String ECLIPSE_JDT_UI_PREFS_PATH = EclipseWorkspaceWriter.ECLIPSE_CORE_RUNTIME_SETTINGS_DIR
+ + "/" + EclipseWorkspaceWriter.ECLIPSE_JDT_UI_PREFS_FILE;
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ public void testWorkspace01()
+ throws Exception
+ {
+ String projectName = "workspace-01";
+
+ FileUtils.deleteDirectory( this.getTestWorkspaceWorkDirectory( "add-maven-repo" ) );
+ testWorkspace( projectName, "add-maven-repo" );
+
+ this.validateM2REPOVar( projectName );
+
+ File eclipseJDTUIPrefsFile = new File( this.getOutputDirectory( projectName ), ECLIPSE_JDT_UI_PREFS_PATH );
+
+ assertFalse( eclipseJDTUIPrefsFile.exists() );
+ }
+
+ public void testWorkspace02()
+ throws Exception
+ {
+ // In this test we purposely do not include expected/.metatdata/.plugins/org.eclipse.core.runtime.settings/org.eclipse.jdt.core.prefs
+ // The content of that file is heavily depended on the location of the test
+
+ String projectName = "workspace-02";
+
+ FileUtils.deleteDirectory( this.getTestWorkspaceWorkDirectory( projectName ) );
+ testWorkspace( projectName );
+
+ this.validateM2REPOVar( projectName );
+
+ File eclipseJDTUIPrefsFile = new File( this.getOutputDirectory( projectName ), ECLIPSE_JDT_UI_PREFS_PATH );
+
+ assertTrue( eclipseJDTUIPrefsFile.exists() );
+
+
+ }
+
+ private void validateM2REPOVar( String projectName )
+ throws Exception
+ {
+ File eclipseJDTCorePrefsFile = new File( this.getOutputDirectory( projectName ), ECLIPSE_JDT_CORE_PREFS_PATH );
+
+ assertTrue( "Test if workspace properties exists", eclipseJDTCorePrefsFile.exists() );
+
+ Properties props = new Properties();
+ props.load( new FileInputStream( eclipseJDTCorePrefsFile ) );
+
+ String M2_REPO = props.getProperty( EclipseWorkspaceWriter.CLASSPATH_VARIABLE_M2_REPO );
+
+ assertNotNull( "Test M2_REPO has a value", M2_REPO );
+
+ String localRepo = PlexusTestCase.getBasedir() + "/target/test-classes/m2repo";
+
+ assertEquals( "Test M2_REPO value", localRepo.replace( '\\', '/' ), M2_REPO.replace( '\\', '/' ) );
+
+ }
+
+}
Added: maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterTest.java?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterTest.java (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/java/org/apache/maven/plugin/eclipse/writers/workspace/EclipseCodeFormatterTest.java Sun Jul 15 13:20:23 2007
@@ -0,0 +1,39 @@
+package org.apache.maven.plugin.eclipse.writers.workspace;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+public class EclipseCodeFormatterTest
+ extends TestCase
+{
+ private static File basedir = new File( System.getProperty( "basedir", "." ) );
+
+ public void testLoadFormatter()
+ throws Exception
+ {
+ File testStyleFile = new File( basedir, "src/test/resources/projects/workspace-02/code-styles.xml" );
+
+ EclipseCodeFormatterProfile formatter = new EclipseCodeFormatterProfile();
+ formatter.init( testStyleFile.toURL(), null );
+
+ assertEquals( "format-1", formatter.getProfileName() );
+
+ //see integration test on workspace-02 for content validation
+ }
+}
Modified: maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-28/module-1/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-28/module-1/pom.xml?view=diff&rev=556442&r1=556441&r2=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-28/module-1/pom.xml (original)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/project-28/module-1/pom.xml Sun Jul 15 13:20:23 2007
@@ -23,6 +23,14 @@
<wtpContextName>contextName</wtpContextName>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <!-- make sure this plugin can handle explicitly set warSoruceDirectory in reactor mode -->
+ <warSourceDirectory>src/main/webapp</warSourceDirectory>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
Added: maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/pom.xml?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/pom.xml (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-01/pom.xml Sun Jul 15 13:20:23 2007
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>eclipse</groupId>
+ <artifactId>maven-eclipse-plugin-test-worksapce-1</artifactId>
+ <version>99.0</version>
+ <name>Maven</name>
+ <packaging>pom</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <version>test</version>
+ <configuration>
+ <workspace>${basedir}</workspace>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/code-styles.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/code-styles.xml?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/code-styles.xml (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/code-styles.xml Sun Jul 15 13:20:23 2007
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="format-1" version="11">
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+</profile>
+<profile kind="CodeFormatterProfile" name="format-2" version="11">
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+</profile>
+</profiles>
Added: maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/expected/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs Sun Jul 15 13:20:23 2007
@@ -0,0 +1,3 @@
+#Mon Jul 09 15:32:24 PDT 2007
+org.eclipse.jdt.ui.formatterprofiles=<?xml version\="1.0" encoding\="UTF-8"?>\n<profiles version\="11">\n<profile kind\="CodeFormatterProfile" name\="format-1" version\="11">\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value\="insert"/>\n</profile>\n<profile kind\="CodeFormatterProfile" name\="format-2" version\="11">\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value\="insert"/>\n<setting id\="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value\="insert"/>\n</profile>\n</profiles>\n
+formatter_profile=_format-1
Added: maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/pom.xml?view=auto&rev=556442
==============================================================================
--- maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/pom.xml (added)
+++ maven/plugins/trunk/maven-eclipse-plugin/src/test/resources/projects/workspace-02/pom.xml Sun Jul 15 13:20:23 2007
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>eclipse</groupId>
+ <artifactId>maven-eclipse-plugin-test-worksapce-2</artifactId>
+ <version>99.0</version>
+ <name>Maven</name>
+ <packaging>pom</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <version>test</version>
+ <configuration>
+ <workspace>${basedir}</workspace>
+ <workspaceCodeStylesURL>file:///${basedir}/code-styles.xml</workspaceCodeStylesURL>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>