You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/08/26 14:54:34 UTC
svn commit: r240227 - in
/maven/components/trunk/maven-archetype/maven-archetype-core: pom.xml
src/main/java/org/apache/maven/archetype/DefaultArchetype.java
Author: brett
Date: Fri Aug 26 05:54:29 2005
New Revision: 240227
URL: http://svn.apache.org/viewcvs?rev=240227&view=rev
Log:
PR: MNG-490
Submitted by: Rahul Thakur
Reviewed by: Brett Porter
Creating an archetype with a different folder structure for java and test sources still results in default (src/main/java) folder being generated.
Modified:
maven/components/trunk/maven-archetype/maven-archetype-core/pom.xml
maven/components/trunk/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java
Modified: maven/components/trunk/maven-archetype/maven-archetype-core/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-archetype/maven-archetype-core/pom.xml?rev=240227&r1=240226&r2=240227&view=diff
==============================================================================
--- maven/components/trunk/maven-archetype/maven-archetype-core/pom.xml (original)
+++ maven/components/trunk/maven-archetype/maven-archetype-core/pom.xml Fri Aug 26 05:54:29 2005
@@ -33,6 +33,11 @@
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
+ <artifactId>maven-model</artifactId>
+ <version>2.0-beta-1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
<version>2.0-beta-1-SNAPSHOT</version>
<scope>test</scope>
Modified: maven/components/trunk/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java?rev=240227&r1=240226&r2=240227&view=diff
==============================================================================
--- maven/components/trunk/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java (original)
+++ maven/components/trunk/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java Fri Aug 26 05:54:29 2005
@@ -23,6 +23,10 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.model.Build;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Resource;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.context.Context;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -31,6 +35,7 @@
import org.codehaus.plexus.velocity.VelocityComponent;
import java.io.File;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -54,6 +59,15 @@
// Components
// ----------------------------------------------------------------------
+ private static final String DEFAULT_TEST_RESOURCE_DIR = "/src/test/resources";
+
+ private static final String DEFAULT_TEST_SOURCE_DIR = "/src/test/java";
+
+ private static final String DEFAULT_RESOURCE_DIR = "/src/main/resources";
+
+ private static final String DEFAULT_SOURCE_DIR = "/src/main/java";
+
+
private VelocityComponent velocity;
private ArtifactResolver artifactResolver;
@@ -69,7 +83,7 @@
// version = latest
public void createArchetype( String archetypeGroupId, String archetypeArtifactId, String archetypeVersion,
- ArtifactRepository localRepository, List remoteRepositories, Map parameters )
+ ArtifactRepository localRepository, List remoteRepositories, Map parameters )
throws ArchetypeNotFoundException, ArchetypeDescriptorException, ArchetypeTemplateProcessingException
{
// ----------------------------------------------------------------------
@@ -99,7 +113,9 @@
getLogger().info( "----------------------------------------------------------------------------" );
- getLogger().info( "Using following parameters for creating Archetype: " + archetypeArtifactId + ":" + archetypeVersion );
+ getLogger().info(
+ "Using following parameters for creating Archetype: " + archetypeArtifactId + ":"
+ + archetypeVersion );
getLogger().info( "----------------------------------------------------------------------------" );
@@ -127,8 +143,7 @@
}
}
-
-
+
// ----------------------------------------------------------------------
// Load the descriptor
// ----------------------------------------------------------------------
@@ -194,21 +209,128 @@
{
processTemplate( outputDirectory, context, ARCHETYPE_POM, false, null );
+ // ---------------------------------------------------------------------
+ // Model generated for the new archetype, so process it now
+ // ---------------------------------------------------------------------
+ File pomFile = new File( outputDirectory + "/" + ARCHETYPE_POM );
+ FileReader pomReader = new FileReader( pomFile );
+ MavenXpp3Reader reader = new MavenXpp3Reader();
+ Model generatedModel = reader.read( pomReader );
+
+ // XXX: Following POM processing block may be a candidate for
+ // refactoring out into service methods or moving to
+ // createProjectDirectoryStructure(outputDirectory)
+ Build build = null;
+ boolean bOverrideSrcDir = false;
+ boolean bOverrideScriptSrcDir = false;
+ boolean bOverrideResourceDir = false;
+ boolean bOverrideTestSrcDir = false;
+ boolean bOverrideTestResourceDir = false;
+ boolean bFoundBuildElement = ( null != ( build = generatedModel.getBuild() ) );
+
+ if ( getLogger().isDebugEnabled() )
+ getLogger()
+ .debug(
+ "********************* Debug info for resources created from generated Model ***********************" );
+
+ if ( getLogger().isDebugEnabled() )
+ getLogger().debug( "Was build element found in generated POM?: " + bFoundBuildElement );
+
+ // create source directory if specified in POM
+ if ( bFoundBuildElement && null != build.getSourceDirectory() )
+ {
+ if ( getLogger().isDebugEnabled() )
+ getLogger().debug( "Overriding default source directory " );
+ bOverrideSrcDir = true;
+ String srcDirectory = build.getSourceDirectory();
+ srcDirectory = StringUtils.replace( srcDirectory, "\\", "/" );
+ FileUtils.mkdir( outputDirectory
+ + ( srcDirectory.startsWith( "/" ) ? srcDirectory : ( "/" + srcDirectory ) ) );
+ }
+
+ // create script source directory if specified in POM
+ if ( bFoundBuildElement && null != build.getScriptSourceDirectory() )
+ {
+ if ( getLogger().isDebugEnabled() )
+ getLogger().debug( "Overriding default script source directory " );
+ bOverrideScriptSrcDir = true;
+ String scriptSourceDirectory = build.getScriptSourceDirectory();
+ scriptSourceDirectory = StringUtils.replace( scriptSourceDirectory, "\\", "/" );
+ FileUtils.mkdir( outputDirectory
+ + ( scriptSourceDirectory.startsWith( "/" ) ? scriptSourceDirectory
+ : ( "/" + scriptSourceDirectory ) ) );
+
+ }
+
+ // create resource director(y/ies) if specified in POM
+ if ( bFoundBuildElement && build.getResources().size() > 0 )
+ {
+ if ( getLogger().isDebugEnabled() )
+ getLogger().info( "Overriding default resource directory " );
+ bOverrideResourceDir = true;
+ Iterator resourceItr = build.getResources().iterator();
+ while ( resourceItr.hasNext() )
+ {
+ Resource resource = (Resource) resourceItr.next();
+ String resourceDirectory = resource.getDirectory();
+ resourceDirectory = StringUtils.replace( resourceDirectory, "\\", "/" );
+ FileUtils.mkdir( outputDirectory
+ + ( resourceDirectory.startsWith( "/" ) ? resourceDirectory : ( "/" + resourceDirectory ) ) );
+ }
+ }
+ // create test source directory if specified in POM
+ if ( bFoundBuildElement && null != build.getTestSourceDirectory() )
+ {
+ if ( getLogger().isDebugEnabled() )
+ getLogger().debug( "Overriding default test directory " );
+ bOverrideTestSrcDir = true;
+ String testDirectory = build.getTestSourceDirectory();
+ testDirectory = StringUtils.replace( testDirectory, "\\", "/" );
+ FileUtils.mkdir( outputDirectory
+ + ( testDirectory.startsWith( "/" ) ? testDirectory : ( "/" + testDirectory ) ) );
+ }
+
+ // create test resource directory if specified in POM
+ if ( bFoundBuildElement && build.getTestResources().size() > 0 )
+ {
+ if ( getLogger().isDebugEnabled() )
+ getLogger().debug( "Overriding default test resource directory " );
+ bOverrideTestResourceDir = true;
+ Iterator testResourceItr = build.getTestResources().iterator();
+ while ( testResourceItr.hasNext() )
+ {
+ Resource resource = (Resource) testResourceItr.next();
+ String testResourceDirectory = resource.getDirectory();
+ testResourceDirectory = StringUtils.replace( testResourceDirectory, "\\", "/" );
+ FileUtils.mkdir( outputDirectory
+ + ( testResourceDirectory.startsWith( "/" ) ? testResourceDirectory
+ : ( "/" + testResourceDirectory ) ) );
+ }
+ }
+
+ getLogger()
+ .info(
+ "********************* End of debug info from resources from generated POM ***********************" );
+
// ----------------------------------------------------------------------
// Main
// ----------------------------------------------------------------------
if ( descriptor.getSources().size() > 0 )
{
- FileUtils.mkdir( outputDirectory + "/src/main/java" );
-
+ if ( !bOverrideSrcDir )
+ {
+ FileUtils.mkdir( outputDirectory + DEFAULT_SOURCE_DIR );
+ }
processSources( outputDirectory, context, descriptor.getSources(), packageName );
}
if ( descriptor.getResources().size() > 0 )
{
- FileUtils.mkdir( outputDirectory + "/src/main/resources" );
-
+ if ( !bOverrideResourceDir )
+ {
+ FileUtils.mkdir( outputDirectory + DEFAULT_RESOURCE_DIR );
+ }
processResources( outputDirectory, context, descriptor.getResources(), packageName );
}
@@ -218,15 +340,20 @@
if ( descriptor.getTestSources().size() > 0 )
{
- FileUtils.mkdir( outputDirectory + "/src/test/java" );
+ if ( !bOverrideTestSrcDir )
+ {
+ FileUtils.mkdir( outputDirectory + DEFAULT_TEST_SOURCE_DIR );
+ }
processSources( outputDirectory, context, descriptor.getTestSources(), packageName );
}
if ( descriptor.getTestResources().size() > 0 )
{
- FileUtils.mkdir( outputDirectory + "/src/test/resources" );
-
+ if ( !bOverrideTestResourceDir )
+ {
+ FileUtils.mkdir( outputDirectory + DEFAULT_TEST_RESOURCE_DIR );
+ }
processResources( outputDirectory, context, descriptor.getTestResources(), packageName );
}
@@ -248,7 +375,7 @@
{
Thread.currentThread().setContextClassLoader( old );
}
-
+
// ----------------------------------------------------------------------
// Log message on Archetype creation
// ----------------------------------------------------------------------
@@ -286,7 +413,7 @@
}
protected void processTemplate( String outputDirectory, Context context, String template,
- boolean packageInFileName, String packageName )
+ boolean packageInFileName, String packageName )
throws Exception
{
File f;
@@ -339,4 +466,5 @@
return loader.getResourceAsStream( name );
}
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org