Author: fgiust Date: Thu Jan 12 13:23:25 2006 New Revision: 368471 URL: http://svn.apache.org/viewcvs?rev=368471&view=rev Log: add support for utility projects in WTP 1.0. Split .component and faces xml writers
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpComponentWriter.java - copied, changed from r367792, maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpSettingsWriter.java maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpFacetsWriter.java (with props) Removed: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpSettingsWriter.java 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/viewcvs/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/EclipsePlugin.java?rev=368471&r1=368470&r2=368471&view=diff ============================================================================== --- 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 Jan 12 13:23:25 2006 @@ -34,7 +34,8 @@ import org.apache.maven.plugin.eclipse.writers.EclipseClasspathWriter; import org.apache.maven.plugin.eclipse.writers.EclipseProjectWriter; import org.apache.maven.plugin.eclipse.writers.EclipseSettingsWriter; -import org.apache.maven.plugin.eclipse.writers.EclipseWtpSettingsWriter; +import org.apache.maven.plugin.eclipse.writers.EclipseWtpComponentWriter; +import org.apache.maven.plugin.eclipse.writers.EclipseWtpFacetsWriter; import org.apache.maven.plugin.eclipse.writers.EclipseWtpmodulesWriter; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.StringUtils; @@ -360,17 +361,16 @@ localRepository, buildOutputDirectory ); } - else if ( "1.0".equals( wtpversion ) ) //$NON-NLS-1$ + else if ( wtpversion != null && wtpversion.startsWith( "1" ) ) //$NON-NLS-1$ { - // Check and write out a WTP Project if this was required. - if ( "war".equalsIgnoreCase( project.getPackaging() ) || "ear".equalsIgnoreCase( project.getPackaging() ) //$NON-NLS-1$ //$NON-NLS-2$ - || "ejb".equalsIgnoreCase( project.getPackaging() ) ) //$NON-NLS-1$ - { - // we assume we have a version 1.0 for WTP - getLog().info( "Generating Eclipse web facet assuming version 1.0 for WTP..." ); - new EclipseWtpSettingsWriter( getLog(), eclipseProjectDir, project, artifacts ) - .write( reactorArtifacts, sourceDirs, localRepository, buildOutputDirectory ); - } + // we assume we have a version 1.0 for WTP + getLog().info( "Generating Eclipse web facet assuming version 1.x for WTP..." ); + new EclipseWtpFacetsWriter( getLog(), eclipseProjectDir, project, artifacts ).write( reactorArtifacts, + sourceDirs, + localRepository, + buildOutputDirectory ); + new EclipseWtpComponentWriter( getLog(), eclipseProjectDir, project, artifacts ) + .write( reactorArtifacts, sourceDirs, localRepository, buildOutputDirectory ); } new EclipseProjectWriter( getLog(), eclipseProjectDir, project ).write( projectBaseDir, executedProject, Copied: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpComponentWriter.java (from r367792, maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpSettingsWriter.java) URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpComponentWriter.java?p2=maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpComponentWriter.java&p1=maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpSettingsWriter.java&r1=367792&r2=368471&rev=368471&view=diff ============================================================================== --- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpSettingsWriter.java (original) +++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpComponentWriter.java Thu Jan 12 13:23:25 2006 @@ -38,36 +38,18 @@ import org.codehaus.plexus.util.xml.XMLWriter; /** - * Creates a .settings folder for Eclipse WTP 1.xRCx release and writes out the configuration under it. + * Creates a .settings folder for Eclipse WTP 1.x release and writes out the configuration under it. * * @author <a href="mailto:[EMAIL PROTECTED]">Rahul Thakur</a> * @author <a href="mailto:[EMAIL PROTECTED]">Fabrizio Giustina</a> * @version $Id$ */ -public class EclipseWtpSettingsWriter +public class EclipseWtpComponentWriter extends AbstractWtpResourceWriter { - private static final String FACET_JST_EAR = "jst.ear"; //$NON-NLS-1$ - private static final String ATTR_CONTEXT_ROOT = "context-root"; //$NON-NLS-1$ - private static final String ATTR_VERSION = "version"; //$NON-NLS-1$ - - private static final String ELT_INSTALLED = "installed"; //$NON-NLS-1$ - - private static final String FACET_JST_EJB = "jst.ejb"; //$NON-NLS-1$ - - private static final String FACET_JST_WEB = "jst.web"; //$NON-NLS-1$ - - private static final String FACET_JST_JAVA = "jst.java"; //$NON-NLS-1$ - - private static final String ATTR_FACET = "facet"; //$NON-NLS-1$ - - private static final String ELT_FIXED = "fixed"; //$NON-NLS-1$ - - private static final String ELT_FACETED_PROJECT = "faceted-project"; //$NON-NLS-1$ - /** * The .settings folder for Web Tools Project 1.x release. */ @@ -78,12 +60,7 @@ */ private static final String FILE_DOT_COMPONENT = ".component"; //$NON-NLS-1$ - /** - * File name where Eclipse Project's Facet configuration will be stored. - */ - private static final String FILE_FACET_CORE_XML = "org.eclipse.wst.common.project.facet.core.xml"; //$NON-NLS-1$ - - public EclipseWtpSettingsWriter( Log log, File eclipseProjectDir, MavenProject project, Collection artifacts ) + public EclipseWtpComponentWriter( Log log, File eclipseProjectDir, MavenProject project, Collection artifacts ) { super( log, eclipseProjectDir, project, artifacts ); } @@ -92,26 +69,11 @@ ArtifactRepository localRepository, File buildOutputDirectory ) throws MojoExecutionException { - // delete the .settings directory (if exists) - File settingsDir = new File( getEclipseProjectDirectory(), DIR_WTP_SETTINGS ); - if ( settingsDir.isDirectory() && !settingsDir.delete() ) - { - // force delete - try - { - FileUtils.forceDelete( settingsDir ); - } - catch ( IOException e ) - { - if ( getLog().isErrorEnabled() ) - { - getLog().error( "Unable to delete directory " + DIR_WTP_SETTINGS ); - } - } - } - // create a .settings directory + // create a .settings directory (if not existing) + File settingsDir = new File( getEclipseProjectDirectory(), DIR_WTP_SETTINGS ); settingsDir.mkdirs(); + FileWriter w; try { @@ -125,21 +87,10 @@ // create a .component file and write out to it XMLWriter writer = new PrettyPrintXMLWriter( w ); String packaging = getProject().getPackaging(); - writeModuleTypeComponent( writer, packaging, buildOutputDirectory, referencedReactorArtifacts, localRepository ); + writeModuleTypeComponent( writer, packaging, buildOutputDirectory, sourceDirs, referencedReactorArtifacts, + localRepository ); IOUtil.close( w ); - // Write out facet core xml - try - { - w = new FileWriter( new File( settingsDir, FILE_FACET_CORE_XML ) ); - } - catch ( IOException ex ) - { - throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex ); //$NON-NLS-1$ - } - writer = new PrettyPrintXMLWriter( w ); - writeModuleTypeFacetCore( writer, packaging ); - IOUtil.close( w ); } /** @@ -153,109 +104,79 @@ * @throws MojoExecutionException */ private void writeModuleTypeComponent( XMLWriter writer, String packaging, File buildOutputDirectory, - List referencedReactorArtifacts, ArtifactRepository localRepository ) + EclipseSourceDir[] sourceDirs, List referencedReactorArtifacts, + ArtifactRepository localRepository ) throws MojoExecutionException { writer.startElement( ELT_PROJECT_MODULES ); writer.addAttribute( ATTR_MODULE_ID, "moduleCoreId" ); //$NON-NLS-1$ writer.startElement( ELT_WB_MODULE ); + writer.addAttribute( ATTR_DEPLOY_NAME, getProject().getArtifactId() ); + + // deploy-path is "/" for utility and ejb projects, "/WEB-INF/classes" for webapps + String target = "/"; //$NON-NLS-1$ + if ( "war".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ { - writer.startElement( ELT_WB_RESOURCE ); - writer.addAttribute( ATTR_DEPLOY_PATH, "/WEB-INF/classes" ); //$NON-NLS-1$ - writer.addAttribute( ATTR_SOURCE_PATH, EclipseUtils.toRelativeAndFixSeparator( getProject().getBasedir(), - new File( getProject() - .getBuild() - .getSourceDirectory() ), - false ) ); - writer.endElement(); + target = "/WEB-INF/classes"; //$NON-NLS-1$ + String warSourceDirectory = EclipseUtils.getPluginSetting( getProject(), ARTIFACT_MAVEN_WAR_PLUGIN, - "warSourceDirectory", "/src/main/webapp" ); //$NON-NLS-1$ //$NON-NLS-2$ + "warSourceDirectory", //$NON-NLS-1$ + "/src/main/webapp" ); //$NON-NLS-1$ + + writer.startElement( ELT_PROPERTY ); + writer.addAttribute( ATTR_CONTEXT_ROOT, getProject().getArtifactId() ); + writer.endElement(); // property + writer.startElement( ELT_WB_RESOURCE ); writer.addAttribute( ATTR_DEPLOY_PATH, "/" ); //$NON-NLS-1$ writer.addAttribute( ATTR_SOURCE_PATH, EclipseUtils .toRelativeAndFixSeparator( getProject().getBasedir(), new File( getEclipseProjectDirectory(), warSourceDirectory ), false ) ); writer.endElement(); + + // @todo is this really needed? + writer.startElement( ELT_PROPERTY ); + writer.addAttribute( ATTR_NAME, "java-output-path" ); //$NON-NLS-1$ + writer.addAttribute( ATTR_VALUE, "/" //$NON-NLS-1$ + + EclipseUtils.toRelativeAndFixSeparator( getProject().getBasedir(), buildOutputDirectory, false ) ); + writer.endElement(); // property + } else if ( "ear".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ { writer.startElement( ELT_WB_RESOURCE ); - writer.addAttribute( ATTR_DEPLOY_PATH, "/ejbmodule" ); //$NON-NLS-1$ + writer.addAttribute( ATTR_DEPLOY_PATH, "/" ); //$NON-NLS-1$ + writer.addAttribute( ATTR_SOURCE_PATH, "/" ); //$NON-NLS-1$ writer.endElement(); } - // write out the dependencies. - writeWarOrEarResources( writer, getProject(), referencedReactorArtifacts, localRepository ); - - // fix for WTP 1.0 - copyExternalDependencies( writer, getProject(), referencedReactorArtifacts, localRepository ); - - // write out properties. - writer.startElement( ELT_PROPERTY ); - writer.addAttribute( ATTR_NAME, "java-output-path" ); //$NON-NLS-1$ - writer.addAttribute( ATTR_VALUE, "/" //$NON-NLS-1$ - + EclipseUtils.toRelativeAndFixSeparator( getProject().getBasedir(), buildOutputDirectory, false ) ); - - // close elements - writer.endElement(); // property - writer.startElement( ELT_PROPERTY ); - writer.addAttribute( ATTR_CONTEXT_ROOT, getProject().getArtifactId() ); - writer.endElement(); // property - writer.endElement(); // wb-module - writer.endElement(); // project-modules - } - /** - * Writes out the facet info for a faceted-project based on the packaging. - * - * @param writer - * @param packaging - */ - private void writeModuleTypeFacetCore( XMLWriter writer, String packaging ) - { - writer.startElement( ELT_FACETED_PROJECT ); - // common facet - writer.startElement( ELT_FIXED ); - writer.addAttribute( ATTR_FACET, FACET_JST_JAVA ); - writer.endElement(); // element fixed - if ( "war".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ + if ( "war".equalsIgnoreCase( packaging ) || "ear".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ //$NON-NLS-2$ { - writer.startElement( ELT_FIXED ); - writer.addAttribute( ATTR_FACET, FACET_JST_WEB ); - writer.endElement(); // fixed - writer.startElement( ELT_INSTALLED ); - writer.addAttribute( ATTR_FACET, FACET_JST_WEB ); - writer.addAttribute( ATTR_VERSION, resolveServletVersion() ); - writer.endElement(); // installed - } - else if ( "ejb".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ - { - writer.startElement( ELT_FIXED ); - writer.addAttribute( ATTR_FACET, FACET_JST_EJB ); - writer.endElement(); // fixed - writer.startElement( ELT_INSTALLED ); - writer.addAttribute( ATTR_FACET, FACET_JST_EJB ); - writer.addAttribute( ATTR_VERSION, resolveEjbVersion() ); - writer.endElement(); // installed + // write out the dependencies. + writeWarOrEarResources( writer, getProject(), referencedReactorArtifacts, localRepository ); + + // fix for WTP 1.0 + copyExternalDependencies( writer, getProject(), referencedReactorArtifacts, localRepository ); } - else if ( "ear".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ + + for ( int j = 0; j < sourceDirs.length; j++ ) { - writer.startElement( ELT_FIXED ); - writer.addAttribute( ATTR_FACET, FACET_JST_EAR ); - writer.endElement(); // fixed - writer.startElement( ELT_INSTALLED ); - writer.addAttribute( ATTR_FACET, FACET_JST_EAR ); - writer.addAttribute( ATTR_VERSION, resolveJ2eeVersion() ); - writer.endElement(); // installed + EclipseSourceDir dir = sourceDirs[j]; + // test src/resources are not added to wtpmodules + if ( !dir.isTest() ) + { + // <wb-resource deploy-path="/" source-path="/src/java" /> + writer.startElement( ELT_WB_RESOURCE ); + writer.addAttribute( ATTR_DEPLOY_PATH, target ); + writer.addAttribute( ATTR_SOURCE_PATH, dir.getPath() ); + writer.endElement(); + } } - // common installed element - writer.startElement( ELT_INSTALLED ); - writer.addAttribute( ATTR_FACET, FACET_JST_JAVA ); - writer.addAttribute( ATTR_VERSION, resolveJavaVersion() ); - writer.endElement(); // installed - writer.endElement(); // faceted-project + writer.endElement(); // wb-module + writer.endElement(); // project-modules } /** Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpFacetsWriter.java URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpFacetsWriter.java?rev=368471&view=auto ============================================================================== --- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpFacetsWriter.java (added) +++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpFacetsWriter.java Thu Jan 12 13:23:25 2006 @@ -0,0 +1,170 @@ +package org.apache.maven.plugin.eclipse.writers; + +/* + * Copyright 2001-2005 The Apache Software Foundation. + * + * Licensed 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 java.io.FileWriter; +import java.io.IOException; +import java.util.Collection; +import java.util.List; + +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.eclipse.EclipseSourceDir; +import org.apache.maven.plugin.eclipse.Messages; +import org.apache.maven.plugin.logging.Log; +import org.apache.maven.project.MavenProject; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter; +import org.codehaus.plexus.util.xml.XMLWriter; + +/** + * Creates a .settings folder for Eclipse WTP 1.x release and writes out the configuration under it. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Rahul Thakur</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Fabrizio Giustina</a> + * @version $Id$ + */ +public class EclipseWtpFacetsWriter + extends AbstractWtpResourceWriter +{ + + private static final String FACET_JST_EAR = "jst.ear"; //$NON-NLS-1$ + + private static final String FACET_JST_UTILITY = "jst.utility"; //$NON-NLS-1$ + + private static final String FACET_JST_EJB = "jst.ejb"; //$NON-NLS-1$ + + private static final String FACET_JST_WEB = "jst.web"; //$NON-NLS-1$ + + private static final String FACET_JST_JAVA = "jst.java"; //$NON-NLS-1$ + + private static final String ATTR_VERSION = "version"; //$NON-NLS-1$ + + private static final String ELT_INSTALLED = "installed"; //$NON-NLS-1$ + + private static final String ATTR_FACET = "facet"; //$NON-NLS-1$ + + private static final String ELT_FIXED = "fixed"; //$NON-NLS-1$ + + private static final String ELT_FACETED_PROJECT = "faceted-project"; //$NON-NLS-1$ + + /** + * The .settings folder for Web Tools Project 1.x release. + */ + private static final String DIR_WTP_SETTINGS = ".settings"; //$NON-NLS-1$ + + /** + * File name where Eclipse Project's Facet configuration will be stored. + */ + private static final String FILE_FACET_CORE_XML = "org.eclipse.wst.common.project.facet.core.xml"; //$NON-NLS-1$ + + public EclipseWtpFacetsWriter( Log log, File eclipseProjectDir, MavenProject project, Collection artifacts ) + { + super( log, eclipseProjectDir, project, artifacts ); + } + + public void write( List referencedReactorArtifacts, EclipseSourceDir[] sourceDirs, + ArtifactRepository localRepository, File buildOutputDirectory ) + throws MojoExecutionException + { + + // create a .settings directory (if not existing) + File settingsDir = new File( getEclipseProjectDirectory(), DIR_WTP_SETTINGS ); + settingsDir.mkdirs(); + + FileWriter w; + + String packaging = getProject().getPackaging(); + + // Write out facet core xml + try + { + w = new FileWriter( new File( settingsDir, FILE_FACET_CORE_XML ) ); + } + catch ( IOException ex ) + { + throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex ); //$NON-NLS-1$ + } + XMLWriter writer = new PrettyPrintXMLWriter( w ); + writeModuleTypeFacetCore( writer, packaging ); + IOUtil.close( w ); + } + + /** + * Writes out the facet info for a faceted-project based on the packaging. + * + * @param writer + * @param packaging + */ + private void writeModuleTypeFacetCore( XMLWriter writer, String packaging ) + { + writer.startElement( ELT_FACETED_PROJECT ); + // common facet + writer.startElement( ELT_FIXED ); + writer.addAttribute( ATTR_FACET, FACET_JST_JAVA ); + writer.endElement(); // element fixed + if ( "war".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ + { + writer.startElement( ELT_FIXED ); + writer.addAttribute( ATTR_FACET, FACET_JST_WEB ); + writer.endElement(); // fixed + writer.startElement( ELT_INSTALLED ); + writer.addAttribute( ATTR_FACET, FACET_JST_WEB ); + writer.addAttribute( ATTR_VERSION, resolveServletVersion() ); + writer.endElement(); // installed + } + else if ( "ejb".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ + { + writer.startElement( ELT_FIXED ); + writer.addAttribute( ATTR_FACET, FACET_JST_EJB ); + writer.endElement(); // fixed + writer.startElement( ELT_INSTALLED ); + writer.addAttribute( ATTR_FACET, FACET_JST_EJB ); + writer.addAttribute( ATTR_VERSION, resolveEjbVersion() ); + writer.endElement(); // installed + } + else if ( "ear".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ + { + writer.startElement( ELT_FIXED ); + writer.addAttribute( ATTR_FACET, FACET_JST_EAR ); + writer.endElement(); // fixed + writer.startElement( ELT_INSTALLED ); + writer.addAttribute( ATTR_FACET, FACET_JST_EAR ); + writer.addAttribute( ATTR_VERSION, resolveJ2eeVersion() ); + writer.endElement(); // installed + } + else if ( "jar".equalsIgnoreCase( packaging ) ) //$NON-NLS-1$ + { + writer.startElement( ELT_FIXED ); + writer.addAttribute( ATTR_FACET, FACET_JST_UTILITY ); + writer.endElement(); // fixed + writer.startElement( ELT_INSTALLED ); + writer.addAttribute( ATTR_FACET, FACET_JST_UTILITY ); + writer.addAttribute( ATTR_VERSION, "1.0" ); //$NON-NLS-2$ + writer.endElement(); // installed + } + + // common installed element + writer.startElement( ELT_INSTALLED ); + writer.addAttribute( ATTR_FACET, FACET_JST_JAVA ); + writer.addAttribute( ATTR_VERSION, resolveJavaVersion() ); + writer.endElement(); // installed + writer.endElement(); // faceted-project + } + +} Propchange: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpFacetsWriter.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWtpFacetsWriter.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision