You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ra...@apache.org on 2008/03/04 20:46:35 UTC
svn commit: r633608 - in /maven/archetype/trunk:
archetype-common/src/main/java/org/apache/maven/archetype/
archetype-common/src/main/java/org/apache/maven/archetype/creator/
archetype-common/src/test/java/org/apache/maven/archetype/creator/
archetype-...
Author: rafale
Date: Tue Mar 4 11:46:32 2008
New Revision: 633608
URL: http://svn.apache.org/viewvc?rev=633608&view=rev
Log:
Removed the ignoreReplica property
Modified:
maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java?rev=633608&r1=633607&r2=633608&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java (original)
+++ maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java Tue Mar 4 11:46:32 2008
@@ -32,8 +32,6 @@
{
private ArtifactRepository localRepository;
-// private List remoteRepositories;
-
private MavenProject project;
private File propertyFile;
@@ -44,8 +42,6 @@
private String defaultEncoding = "UTF-8";
- private boolean ignoreReplica = true;
-
private boolean preserveCData = false;
private boolean keepParent = true;
@@ -70,18 +66,6 @@
return this;
}
-// public List getRemoteRepositories()
-// {
-// return remoteRepositories;
-// }
-//
-// public ArchetypeCreationRequest setRemoteRepositories( List remoteRepositories )
-// {
-// this.remoteRepositories = remoteRepositories;
-//
-// return this;
-// }
-
public MavenProject getProject()
{
return project;
@@ -138,18 +122,6 @@
public ArchetypeCreationRequest setDefaultEncoding( String defaultEncoding )
{
this.defaultEncoding = defaultEncoding;
-
- return this;
- }
-
- public boolean isIgnoreReplica()
- {
- return ignoreReplica;
- }
-
- public ArchetypeCreationRequest setIgnoreReplica( boolean ignoreReplica )
- {
- this.ignoreReplica = ignoreReplica;
return this;
}
Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java?rev=633608&r1=633607&r2=633608&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java (original)
+++ maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java Tue Mar 4 11:46:32 2008
@@ -23,8 +23,6 @@
import org.apache.commons.collections.bidimap.DualTreeBidiMap;
import org.apache.maven.archetype.ArchetypeCreationRequest;
import org.apache.maven.archetype.ArchetypeCreationResult;
-import org.apache.maven.archetype.common.ArchetypeConfiguration;
-import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.apache.maven.archetype.common.ArchetypeFilesResolver;
import org.apache.maven.archetype.common.ArchetypeRegistryManager;
import org.apache.maven.archetype.common.Constants;
@@ -34,8 +32,6 @@
import org.apache.maven.archetype.common.util.PathUtils;
import org.apache.maven.archetype.creator.olddescriptor.OldArchetypeDescriptor;
import org.apache.maven.archetype.creator.olddescriptor.OldArchetypeDescriptorXpp3Writer;
-import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
-import org.apache.maven.archetype.exception.ArchetypeNotDefined;
import org.apache.maven.archetype.exception.TemplateCreationException;
import org.apache.maven.archetype.metadata.ArchetypeDescriptor;
import org.apache.maven.archetype.metadata.FileSet;
@@ -107,8 +103,6 @@
String defaultEncoding = request.getDefaultEncoding();
- boolean ignoreReplica = request.isIgnoreReplica();
-
boolean preserveCData = request.isPreserveCData();
boolean keepParent = request.isKeepParent();
@@ -117,58 +111,27 @@
ArtifactRepository localRepository = request.getLocalRepository();
- ArchetypeDefinition ad = new ArchetypeDefinition();
-
- ad.setGroupId( project.getGroupId() );
-
- ad.setArtifactId( project.getArtifactId() );
-
- ad.setVersion( project.getVersion() );
-
- if ( !ad.isDefined() )
- {
- result.setCause( new ArchetypeNotDefined( "The archetype is not defined" ) );
-
- return;
- }
-
- ArchetypeConfiguration ac = new ArchetypeConfiguration();
-
- ac.setGroupId( ad.getGroupId() );
-
- ac.setArtifactId( ad.getArtifactId() );
-
- ac.setVersion( ad.getVersion() );
-
- ac.setGoals( ad.getGoals() );
-
- if ( !ac.isConfigured() )
- {
- result.setCause( new ArchetypeNotConfigured( "The archetype is not configured" ) );
-
- return;
- }
-
Properties properties = new Properties();
+ Properties configurationProperties = new Properties();
- properties.setProperty( Constants.GROUP_ID, ad.getGroupId() );
- ac.setProperty( Constants.GROUP_ID, ad.getGroupId() );
+ properties.setProperty( Constants.GROUP_ID, project.getGroupId() );
+ configurationProperties.setProperty( Constants.GROUP_ID, project.getGroupId() );
- properties.setProperty( Constants.ARTIFACT_ID, ad.getArtifactId() );
- ac.setProperty( Constants.ARTIFACT_ID, ad.getArtifactId() );
+ properties.setProperty( Constants.ARTIFACT_ID, project.getArtifactId() );
+ configurationProperties.setProperty( Constants.ARTIFACT_ID, project.getArtifactId() );
- properties.setProperty( Constants.VERSION, ad.getVersion() );
- ac.setProperty( Constants.VERSION, ad.getVersion() );
+ properties.setProperty( Constants.VERSION, project.getVersion() );
+ configurationProperties.setProperty( Constants.VERSION, project.getVersion() );
if ( request.getPackageName() != null )
{
properties.setProperty( Constants.PACKAGE, request.getPackageName() );
- ac.setProperty( Constants.PACKAGE, request.getPackageName() );
+ configurationProperties.setProperty( Constants.PACKAGE, request.getPackageName() );
}
else
{
- properties.setProperty( Constants.PACKAGE, ad.getGroupId() );
- ac.setProperty( Constants.PACKAGE, ad.getGroupId() );
+ properties.setProperty( Constants.PACKAGE, project.getGroupId() );
+ configurationProperties.setProperty( Constants.PACKAGE, project.getGroupId() );
}
File basedir = project.getBasedir();
@@ -179,11 +142,11 @@
Model model = new Model();
model.setModelVersion( "4.0.0" );
- model.setGroupId( ad.getGroupId() );
- model.setArtifactId( ad.getArtifactId() );
- model.setVersion( ad.getVersion() );
+ model.setGroupId( project.getGroupId() );
+ model.setArtifactId( project.getArtifactId() );
+ model.setVersion( project.getVersion() );
model.setPackaging( "maven-archetype" );
- model.setName( ad.getArtifactId() );
+ model.setName( project.getArtifactId() );
Build build = new Build();
model.setBuild( build );
@@ -263,26 +226,7 @@
archetypeFilesDirectory.mkdirs();
- getLogger().debug( "OldArchetype's files output directory " + archetypeFilesDirectory );
-
- File replicaMainDirectory =
- FileUtils.resolveFile(
- generatedSourcesDirectory,
- getReplicaOutputDirectory() + File.separator
- + ad.getArtifactId()
- );
-
- if ( !ignoreReplica )
- {
- replicaMainDirectory.mkdirs();
- }
-
- File replicaFilesDirectory = FileUtils.resolveFile( replicaMainDirectory, "reference" );
-
- if ( !ignoreReplica )
- {
- replicaFilesDirectory.mkdirs();
- }
+ getLogger().debug( "Archetype's files output directory " + archetypeFilesDirectory );
File archetypeDescriptorFile = FileUtils.resolveFile( archetypeResourcesDirectory, Constants.ARCHETYPE_DESCRIPTOR );
@@ -290,9 +234,9 @@
ArchetypeDescriptor archetypeDescriptor = new ArchetypeDescriptor();
- archetypeDescriptor.setName( ad.getArtifactId() );
+ archetypeDescriptor.setName( project.getArtifactId() );
- getLogger().debug( "Starting archetype's descriptor " + ad.getArtifactId() );
+ getLogger().debug( "Starting archetype's descriptor " + project.getArtifactId() );
archetypeDescriptor.setPartial( partialArchetype );
@@ -307,7 +251,7 @@
pomReversedProperties.remove( Constants.PACKAGE );
- String packageName = ac.getProperty( Constants.PACKAGE );
+ String packageName = configurationProperties.getProperty( Constants.PACKAGE );
try
{
@@ -336,20 +280,9 @@
getLogger().debug( "Created files for " + archetypeDescriptor.getName() );
- if ( !ignoreReplica )
- {
- createReplicaFiles( filesets, basedir, replicaFilesDirectory );
-
- getLogger().debug( "Created replica files for " + archetypeDescriptor.getName() );
-
- FileUtils.copyFile( propertyFile, new File( replicaMainDirectory, "archetype.properties" ) );
-
- new File( replicaMainDirectory, "goal.txt" ).createNewFile();
- }
-
setParentArtifactId(
reverseProperties,
- ac.getProperty( Constants.ARTIFACT_ID )
+ configurationProperties.getProperty( Constants.ARTIFACT_ID )
);
Iterator modules = pom.getModules().iterator();
@@ -362,16 +295,14 @@
ModuleDescriptor moduleDescriptor =
createModule(
reverseProperties,
- ac.getProperty( Constants.ARTIFACT_ID ),
+ configurationProperties.getProperty( Constants.ARTIFACT_ID ),
moduleId,
packageName,
FileUtils.resolveFile( basedir, moduleId ),
FileUtils.resolveFile( archetypeFilesDirectory, moduleId ),
- FileUtils.resolveFile( replicaFilesDirectory, moduleId ),
languages,
filtereds,
defaultEncoding,
- ignoreReplica,
preserveCData,
keepParent
);
@@ -385,19 +316,19 @@
restoreParentArtifactId( reverseProperties, null );
restoreArtifactId(
reverseProperties,
- ac.getProperty( Constants.ARTIFACT_ID )
+ configurationProperties.getProperty( Constants.ARTIFACT_ID )
);
- createPoms( pom, ac.getProperty( Constants.ARTIFACT_ID ),
- ac.getProperty( Constants.ARTIFACT_ID ),
+ createPoms( pom, configurationProperties.getProperty( Constants.ARTIFACT_ID ),
+ configurationProperties.getProperty( Constants.ARTIFACT_ID ),
archetypeFilesDirectory, basedir,
pomReversedProperties, preserveCData, keepParent );
- getLogger().debug( "Created OldArchetype " + archetypeDescriptor.getName() + " pom" );
+ getLogger().debug( "Created Archetype " + archetypeDescriptor.getName() + " pom" );
ArchetypeDescriptorXpp3Writer writer = new ArchetypeDescriptorXpp3Writer();
writer.write( new FileWriter( archetypeDescriptorFile ), archetypeDescriptor );
- getLogger().debug( "OldArchetype " + archetypeDescriptor.getName() + " descriptor written" );
+ getLogger().debug( "Archetype " + archetypeDescriptor.getName() + " descriptor written" );
OldArchetypeDescriptor oldDescriptor =
convertToOldDescriptor( archetypeDescriptor.getName(), packageName, basedir );
@@ -409,7 +340,7 @@
archetypeDescriptorFile.getParentFile().mkdirs();
writeOldDescriptor( oldDescriptor, oldDescriptorFile );
getLogger().debug(
- "OldArchetype " + archetypeDescriptor.getName() + " old descriptor written"
+ "Archetype " + archetypeDescriptor.getName() + " old descriptor written"
);
}
catch ( Exception e )
@@ -976,7 +907,7 @@
IOException
{
getLogger().debug(
- "Creating OldArchetype/Module files from " + basedir + " to " + archetypeFilesDirectory
+ "Creating Archetype/Module files from " + basedir + " to " + archetypeFilesDirectory
);
Iterator iterator = fileSets.iterator();
@@ -1093,7 +1024,7 @@
if ( initialcontent.indexOf( "${" + property + "}" ) > 0 )
{
- getLogger().warn( "OldArchetype uses ${" + property +
+ getLogger().warn( "Archetype uses ${" + property +
"} for internal processing, but file " + initialPomFile +
" contains this property already" );
}
@@ -1216,11 +1147,9 @@
String packageName,
File basedir,
File archetypeFilesDirectory,
- File replicaFilesDirectory,
List languages,
List filtereds,
String defaultEncoding,
- boolean ignoreReplica,
boolean preserveCData,
boolean keepParent
)
@@ -1272,12 +1201,6 @@
);
getLogger().debug( "Created files for module " + archetypeDescriptor.getName() );
- if ( !ignoreReplica )
- {
- createReplicaFiles( filesets, basedir, replicaFilesDirectory );
- getLogger().debug( "Created replica files for " + archetypeDescriptor.getName() );
- }
-
String parentArtifactId = reverseProperties.getProperty( Constants.PARENT_ARTIFACT_ID );
setParentArtifactId( reverseProperties, pom.getArtifactId() );
@@ -1296,11 +1219,9 @@
packageName,
FileUtils.resolveFile( basedir, subModuleId ),
FileUtils.resolveFile( archetypeFilesDirectory, subModuleId ),
- FileUtils.resolveFile( replicaFilesDirectory, subModuleId ),
languages,
filtereds,
defaultEncoding,
- ignoreReplica,
preserveCData,
keepParent
);
@@ -1685,13 +1606,6 @@
}
return unpackagedSources;
- }
-
- private String getReplicaOutputDirectory()
- {
- return
- Constants.SRC + File.separator + Constants.TEST + File.separator + Constants.RESOURCES
- + File.separator + "projects";
}
private Properties getRequiredProperties(
Modified: maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java?rev=633608&r1=633607&r2=633608&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java (original)
+++ maven/archetype/trunk/archetype-common/src/test/java/org/apache/maven/archetype/creator/DefaultArchetypeCreatorTest.java Tue Mar 4 11:46:32 2008
@@ -137,7 +137,6 @@
.setLanguages( languages )
.setFiltereds( filtereds )
.setDefaultEncoding( "UTF-8" )
- .setIgnoreReplica( true )
.setPartialArchetype( false )
.setPreserveCData( false )
.setKeepParent( false );
Modified: maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java?rev=633608&r1=633607&r2=633608&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java (original)
+++ maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java Tue Mar 4 11:46:32 2008
@@ -1,225 +1,216 @@
-/*
- * 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.archetype.mojos;
-
-import org.apache.maven.archetype.ArchetypeCreationRequest;
-import org.apache.maven.archetype.ArchetypeCreationResult;
-import org.apache.maven.archetype.Archetype;
-import org.apache.maven.archetype.common.ArchetypeRegistryManager;
-import org.apache.maven.archetype.ui.ArchetypeCreationConfigurator;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-
-import java.io.File;
-import java.util.List;
-
-/**
- * Creates sample archetype from current project.
- *
- * @author rafale
- * @requiresProject true
- * @goal create-from-project
- * @execute phase="generate-sources"
- * @aggregator
- */
-public class CreateArchetypeFromProjectMojo
- extends AbstractMojo
-{
- /** @component */
- ArchetypeCreationConfigurator configurator;
-
- /**
- * Enable the interactive mode to define the archetype from the project.
- *
- * @parameter expression="${interactive}" default-value="false"
- */
- private boolean interactive;
-
- /** @component */
- ArchetypeRegistryManager archetypeRegistryManager;
-
- /** @component */
- Archetype archetype;
-
- /**
- * File extensions which are checked for project's text files (vs binary files).
- *
- * @parameter expression="${archetype.filteredExtentions}"
- */
- private String archetypeFilteredExtentions;
-
- /**
- * Directory names which are checked for project's sources main package.
- *
- * @parameter expression="${archetype.languages}"
- */
- private String archetypeLanguages;
-
- /**
- * The location of the registry file.
- *
- * @parameter expression="${user.home}/.m2/archetype.xml"
- */
- private File archetypeRegistryFile;
-
- /**
- * Velocity templates encoding.
- *
- * @parameter default-value="UTF-8" expression="${archetype.encoding}"
- */
- private String defaultEncoding;
-
- /**
- * Ignore the replica creation.
- *
- * @parameter expression="${archetype.ignoreReplica}"
- */
- private boolean ignoreReplica = true;
-
- /**
- * Create a partial archetype.
- *
- * @parameter expression="${archetype.partialArchetype}"
- */
- private boolean partialArchetype = false;
-
- /**
- * Create pom's velocity templates with CDATA preservasion. This uses the String replaceAll
- * method and risk to have some overly replacement capabilities (beware of '1.0' value).
- *
- * @parameter expression="${archetype.preserveCData}"
- */
- private boolean preserveCData = false;
-
- /** @parameter expression="${localRepository}" */
- private ArtifactRepository localRepository;
-
- /**
- * Poms in archetype are created with their initial parent.
- * This property is ignored when preserveCData is true.
- *
- * @parameter expression="${archetype.keepParent}"
- */
- private boolean keepParent = true;
-
- /**
- * The maven Project to create an archetype from.
- *
- * @parameter expression="${project}"
- * @required
- * @readonly
- */
- private MavenProject project;
-
- /**
- * The property file that holds the plugin configuration.
- *
- * @parameter default-value="target/archetype.properties" expression="${archetype.properties}"
- */
- private File propertyFile;
-
- /** @parameter expression="${basedir}/target" */
- private File outputDirectory;
-
- /** @parameter expression="${testMode}" */
- private boolean testMode;
-
- /** @parameter expression="${packageName}" */
- private String packageName;//Find a better way to resolve the package!!! enforce usage of the configurator
-
- public void execute()
- throws
- MojoExecutionException,
- MojoFailureException
- {
- try
- {
- if ( propertyFile != null )
- {
- propertyFile.getParentFile().mkdirs();
- }
-
- List languages = archetypeRegistryManager.getLanguages( archetypeLanguages, archetypeRegistryFile );
-
- configurator.configureArchetypeCreation(
- project,
- new Boolean( interactive ),
- System.getProperties(),
- propertyFile,
- languages
- );
-
- List filtereds =
- archetypeRegistryManager.getFilteredExtensions(
- archetypeFilteredExtentions,
- archetypeRegistryFile
- );
-
- ArchetypeCreationRequest request = new ArchetypeCreationRequest()
- .setProject( project )
- /*Used when in interactive mode*/
- .setPropertyFile( propertyFile )
- .setLanguages( languages )
- /*Should be refactored to use some ant patterns*/
- .setFiltereds( filtereds )
- /*Should be removed*/
- .setIgnoreReplica( ignoreReplica )
- /*This should be correctly handled*/
- .setPreserveCData( preserveCData )
- .setKeepParent( keepParent )
- .setPartialArchetype( partialArchetype )
- /*This should be used before there and use only languages and filtereds*/
- .setArchetypeRegistryFile( archetypeRegistryFile )
- .setLocalRepository( localRepository )
- /*this should be resolved and asked for user to verify*/
- .setPackageName(packageName);
-
- ArchetypeCreationResult result = archetype.createArchetypeFromProject( request );
-
- if ( result.getCause() != null )
- {
- throw new MojoExecutionException( result.getCause().getMessage(), result.getCause() );
- }
-
- getLog().info( "OldArchetype created in target/generated-sources/archetype" );
-
- if ( testMode )
- {
- // Now here a properties file would be useful to write so that we could automate
- // some functional tests where we string together an:
- //
- // archetype create from project -> deploy it into a test repo
- // project create from archetype -> use the repository we deployed to archetype to
- // generate
- // test the output
- //
- // This of course would be strung together from the outside.
- }
-
- }
- catch ( Exception ex )
- {
- throw new MojoExecutionException( ex.getMessage(), ex );
- }
- }
-}
+/*
+ * 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.archetype.mojos;
+
+import org.apache.maven.archetype.ArchetypeCreationRequest;
+import org.apache.maven.archetype.ArchetypeCreationResult;
+import org.apache.maven.archetype.Archetype;
+import org.apache.maven.archetype.common.ArchetypeRegistryManager;
+import org.apache.maven.archetype.ui.ArchetypeCreationConfigurator;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Creates sample archetype from current project.
+ *
+ * @author rafale
+ * @requiresProject true
+ * @goal create-from-project
+ * @execute phase="generate-sources"
+ * @aggregator
+ */
+public class CreateArchetypeFromProjectMojo
+ extends AbstractMojo
+{
+ /** @component */
+ ArchetypeCreationConfigurator configurator;
+
+ /**
+ * Enable the interactive mode to define the archetype from the project.
+ *
+ * @parameter expression="${interactive}" default-value="false"
+ */
+ private boolean interactive;
+
+ /** @component */
+ ArchetypeRegistryManager archetypeRegistryManager;
+
+ /** @component */
+ Archetype archetype;
+
+ /**
+ * File extensions which are checked for project's text files (vs binary files).
+ *
+ * @parameter expression="${archetype.filteredExtentions}"
+ */
+ private String archetypeFilteredExtentions;
+
+ /**
+ * Directory names which are checked for project's sources main package.
+ *
+ * @parameter expression="${archetype.languages}"
+ */
+ private String archetypeLanguages;
+
+ /**
+ * The location of the registry file.
+ *
+ * @parameter expression="${user.home}/.m2/archetype.xml"
+ */
+ private File archetypeRegistryFile;
+
+ /**
+ * Velocity templates encoding.
+ *
+ * @parameter default-value="UTF-8" expression="${archetype.encoding}"
+ */
+ private String defaultEncoding;
+
+ /**
+ * Create a partial archetype.
+ *
+ * @parameter expression="${archetype.partialArchetype}"
+ */
+ private boolean partialArchetype = false;
+
+ /**
+ * Create pom's velocity templates with CDATA preservasion. This uses the String replaceAll
+ * method and risk to have some overly replacement capabilities (beware of '1.0' value).
+ *
+ * @parameter expression="${archetype.preserveCData}"
+ */
+ private boolean preserveCData = false;
+
+ /** @parameter expression="${localRepository}" */
+ private ArtifactRepository localRepository;
+
+ /**
+ * Poms in archetype are created with their initial parent.
+ * This property is ignored when preserveCData is true.
+ *
+ * @parameter expression="${archetype.keepParent}"
+ */
+ private boolean keepParent = true;
+
+ /**
+ * The maven Project to create an archetype from.
+ *
+ * @parameter expression="${project}"
+ * @required
+ * @readonly
+ */
+ private MavenProject project;
+
+ /**
+ * The property file that holds the plugin configuration.
+ *
+ * @parameter default-value="target/archetype.properties" expression="${archetype.properties}"
+ */
+ private File propertyFile;
+
+ /** @parameter expression="${basedir}/target" */
+ private File outputDirectory;
+
+ /** @parameter expression="${testMode}" */
+ private boolean testMode;
+
+ /** @parameter expression="${packageName}" */
+ private String packageName;//Find a better way to resolve the package!!! enforce usage of the configurator
+
+ public void execute()
+ throws
+ MojoExecutionException,
+ MojoFailureException
+ {
+ try
+ {
+ if ( propertyFile != null )
+ {
+ propertyFile.getParentFile().mkdirs();
+ }
+
+ List languages = archetypeRegistryManager.getLanguages( archetypeLanguages, archetypeRegistryFile );
+
+ configurator.configureArchetypeCreation(
+ project,
+ new Boolean( interactive ),
+ System.getProperties(),
+ propertyFile,
+ languages
+ );
+
+ List filtereds =
+ archetypeRegistryManager.getFilteredExtensions(
+ archetypeFilteredExtentions,
+ archetypeRegistryFile
+ );
+
+ ArchetypeCreationRequest request = new ArchetypeCreationRequest()
+ .setProject( project )
+ /*Used when in interactive mode*/
+ .setPropertyFile( propertyFile )
+ .setLanguages( languages )
+ /*Should be refactored to use some ant patterns*/
+ .setFiltereds( filtereds )
+ /*This should be correctly handled*/
+ .setPreserveCData( preserveCData )
+ .setKeepParent( keepParent )
+ .setPartialArchetype( partialArchetype )
+ /*This should be used before there and use only languages and filtereds*/
+ .setArchetypeRegistryFile( archetypeRegistryFile )
+ .setLocalRepository( localRepository )
+ /*this should be resolved and asked for user to verify*/
+ .setPackageName(packageName);
+
+ ArchetypeCreationResult result = archetype.createArchetypeFromProject( request );
+
+ if ( result.getCause() != null )
+ {
+ throw new MojoExecutionException( result.getCause().getMessage(), result.getCause() );
+ }
+
+ getLog().info( "OldArchetype created in target/generated-sources/archetype" );
+
+ if ( testMode )
+ {
+ // Now here a properties file would be useful to write so that we could automate
+ // some functional tests where we string together an:
+ //
+ // archetype create from project -> deploy it into a test repo
+ // project create from archetype -> use the repository we deployed to archetype to
+ // generate
+ // test the output
+ //
+ // This of course would be strung together from the outside.
+ }
+
+ }
+ catch ( Exception ex )
+ {
+ throw new MojoExecutionException( ex.getMessage(), ex );
+ }
+ }
+}