Author: kenney Date: Thu Nov 16 06:26:33 2006 New Revision: 475748 URL: http://svn.apache.org/viewvc?view=rev&rev=475748 Log: Moved EclipseProjectWriter back its correct locatin, after EclipseClasspathWriter (jdcaseys merge probably changed this).
This is needed because the EclipseClasspathWriter modifies the EclipseWriterConfig by adding builders. Modified: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java Modified: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java?view=diff&rev=475748&r1=475747&r2=475748 ============================================================================== --- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java (original) +++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java Thu Nov 16 06:26:33 2006 @@ -94,7 +94,7 @@ private static final String COMMON_PATH_JDT_LAUNCHING_JRE_CONTAINER = "org.eclipse.jdt.launching.JRE_CONTAINER"; //$NON-NLS-1$ - private static final String REQUIRED_PLUGINS_CONTAINER = "org.eclipse.pde.core.requiredPlugins"; //$NON-NLS-1$ + private static final String REQUIRED_PLUGINS_CONTAINER = "org.eclipse.pde.core.requiredPlugins"; //$NON-NLS-1$ // warning, order is important for binary search public static final String[] WTP_SUPPORTED_VERSIONS = new String[] { "1.0", "1.5", "R7", "none" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ @@ -113,27 +113,27 @@ * List of eclipse project natures. By default the * <code>org.eclipse.jdt.core.javanature</code> nature plus the needed WTP * natures are added. Natures added using this property <strong>replace</strong> the default list. - * + * * <pre> * <projectnatures> * <projectnature>org.eclipse.jdt.core.javanature</projectnature> * <projectnature>org.eclipse.wst.common.modulecore.ModuleCoreNature</projectnature> * </projectnatures> * </pre> - * + * * @parameter */ private List projectnatures; /** * List of eclipse project natures to be added to the default ones. - * + * * <pre> * <additionalProjectnatures> * <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> * </additionalProjectnatures> * </pre> - * + * * @parameter */ private List additionalProjectnatures; @@ -141,7 +141,7 @@ /** * List of eclipse build commands. By default the <code>org.eclipse.jdt.core.javabuilder</code> builder plus the needed * WTP builders are added. Configuration example: - * + * * <pre> * <buildcommands> * <buildcommand>org.eclipse.wst.common.modulecore.ComponentStructuralBuilder</buildcommand> @@ -149,27 +149,27 @@ * <buildcommand>org.eclipse.wst.common.modulecore.ComponentStructuralBuilderDependencyResolver</buildcommand> * </buildcommands> * </pre> - * + * * @parameter */ private List buildcommands; /** * List of eclipse build commands to be added to the default ones. - * + * * <pre> * <additionalBuildcommands> * <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> * </additionalBuildcommands> * </pre> - * + * * @parameter */ private List additionalBuildcommands; /** * List of container classpath entries. By default the <code>org.eclipse.jdt.launching.JRE_CONTAINER</code> classpath - * container is added. Configuration example: + * container is added. Configuration example: * <pre> * <classpathContainers> * <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer> @@ -177,7 +177,7 @@ * <classpathContainer>org.eclipse.jst.j2ee.internal.web.container/artifact</classpathContainer> * </classpathContainers> * </pre> - * + * * @parameter */ private List classpathContainers; @@ -192,7 +192,7 @@ /** * Eclipse workspace directory. - * + * * @parameter expression="${eclipse.workspace}" alias="outputDir" */ private File eclipseProjectDir; @@ -201,7 +201,7 @@ * When set to false, the plugin will not create sub-projects and instead * reference those sub-projects using the installed package in the local * repository - * + * * @parameter expression="${eclipse.useProjectReferences}" default-value="true" * @required */ @@ -209,7 +209,7 @@ /** * The default output directory - * + * * @parameter expression="${outputDirectory}" alias="outputDirectory" default-value="${project.build.outputDirectory}" * @required */ @@ -218,7 +218,7 @@ /** * The version of WTP for which configuration files will be generated. * The default value is "none" (don't generate WTP configuration), supported versions are "R7" and "1.0" - * + * * @parameter expression="${wtpversion}" default-value="none" */ private String wtpversion; @@ -228,14 +228,14 @@ * the .project file. Additionally it copies all libraries to a project local directory and * references them instead of referencing the files in the local Maven repository. It also * ensured that the "Bundle-Classpath" in META-INF/MANIFEST.MF is synchronized. - * + * * @parameter expression="${eclipse.pde}" default-value="false" */ private boolean pde; /** * The relative path of the manifest file - * + * * @parameter expression="${eclipse.manifest}" default-value="${basedir}/META-INF/MANIFEST.MF" */ private File manifest; @@ -243,7 +243,7 @@ /** * Allow to configure additional generic configuration files for eclipse that will be written out to disk when * running eclipse:eclipse. FOr each file you can specify the name and the text content. - * + * * <pre> * <additionalConfig> * <file> @@ -259,7 +259,7 @@ * </file> * </additionalConfig> * </pre> - * + * * @parameter */ private EclipseConfigFile[] additionalConfig; @@ -273,7 +273,7 @@ * Not a plugin parameter. Is this a java project? */ private boolean isJavaProject; - + protected boolean isJavaProject() { return isJavaProject; @@ -594,12 +594,12 @@ { eclipseProjectDir = executedProject.getFile().getParentFile(); } - + if ( !eclipseProjectDir.exists() && !eclipseProjectDir.mkdirs() ) { throw new MojoExecutionException( Messages.getString( "EclipsePlugin.cantcreatedir", eclipseProjectDir ) ); //$NON-NLS-1$ } - + if ( !eclipseProjectDir.equals( executedProject.getFile().getParentFile() ) ) { if ( !eclipseProjectDir.isDirectory() ) @@ -669,8 +669,6 @@ new EclipseWtpComponent15Writer().init( getLog(), config ).write(); } - new EclipseProjectWriter().init( getLog(), config ).write(); - new EclipseSettingsWriter().init( getLog(), config ).write(); if ( isJavaProject ) @@ -684,6 +682,12 @@ new EclipseOSGiManifestWriter().init( getLog(), config ).write(); } + // NOTE: This one MUST be after EclipseClasspathwriter, and possibly others, + // since currently EclipseClasspathWriter does some magic to detect nested + // output folders and modifies the configuration by adding new (Ant) builders. + // So the .project file must be written AFTER those have run! + new EclipseProjectWriter().init( getLog(), config ).write(); + if ( additionalConfig != null ) { for ( int j = 0; j < additionalConfig.length; j++ ) @@ -727,15 +731,15 @@ // TODO: add mojo param 'addVersionToProjectName' and if set append // -version to the project name. config.setEclipseProjectName( project.getArtifactId() ); - + Set convertedBuildCommands = new LinkedHashSet(); - + if ( buildcommands != null ) { for ( Iterator it = buildcommands.iterator(); it.hasNext(); ) { Object cmd = it.next(); - + if ( cmd instanceof BuildCommand ) { convertedBuildCommands.add( (BuildCommand) cmd ); @@ -746,7 +750,7 @@ } } } - + config.setBuildCommands( new LinkedList( convertedBuildCommands ) ); config.setBuildOutputDirectory( buildOutputDirectory ); @@ -771,7 +775,7 @@ * <b> * NOTE: This could change the config! * </b> - * + * * @param config * @throws MojoExecutionException */