Author: brett
Date: Mon Apr 3 00:24:06 2006
New Revision: 390971
URL: http://svn.apache.org/viewcvs?rev=390971&view=rev
Log:
[ARCHETYPE-22] allow subpackages in the archetype
Modified:
maven/archetype/trunk/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java
Modified: maven/archetype/trunk/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java
URL: http://svn.apache.org/viewcvs/maven/archetype/trunk/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java?rev=390971&r1=390970&r2=390971&view=diff
==============================================================================
--- maven/archetype/trunk/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java
(original)
+++ maven/archetype/trunk/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java
Mon Apr 3 00:24:06 2006
@@ -526,8 +526,12 @@
if ( !overrideSrcDir )
{
FileUtils.mkdir( outputDirectory + DEFAULT_SOURCE_DIR );
+ processSources( outputDirectory, context, descriptor, packageName, DEFAULT_SOURCE_DIR
);
+ }
+ else
+ {
+ processSources( outputDirectory, context, descriptor, packageName, build.getSourceDirectory()
);
}
- processSources( outputDirectory, context, descriptor, packageName );
}
if ( descriptor.getResources().size() > 0 )
@@ -548,9 +552,12 @@
if ( !overrideTestSrcDir )
{
FileUtils.mkdir( outputDirectory + DEFAULT_TEST_SOURCE_DIR );
+ processTestSources( outputDirectory, context, descriptor, packageName, DEFAULT_TEST_SOURCE_DIR
);
+ }
+ else
+ {
+ processTestSources( outputDirectory, context, descriptor, packageName, build.getTestSourceDirectory()
);
}
-
- processTestSources( outputDirectory, context, descriptor, packageName );
}
if ( descriptor.getTestResources().size() > 0 )
@@ -572,6 +579,13 @@
}
}
+ private void processTemplate( String outputDirectory, Context context, String template,
+ TemplateDescriptor descriptor, boolean packageInFileName,
String packageName )
+ throws ArchetypeTemplateProcessingException
+ {
+ processTemplate( outputDirectory, context, template, descriptor, packageInFileName,
packageName, null );
+ }
+
private String getOutputDirectory( String outputDirectory, String testResourceDirectory
)
{
return outputDirectory +
@@ -583,7 +597,7 @@
// ----------------------------------------------------------------------
protected void processSources( String outputDirectory, Context context, ArchetypeDescriptor
descriptor,
- String packageName )
+ String packageName, String sourceDirectory )
throws ArchetypeTemplateProcessingException
{
for ( Iterator i = descriptor.getSources().iterator(); i.hasNext(); )
@@ -591,12 +605,12 @@
String template = (String) i.next();
processTemplate( outputDirectory, context, template, descriptor.getSourceDescriptor(
template ), true,
- packageName );
+ packageName, sourceDirectory );
}
}
protected void processTestSources( String outputDirectory, Context context, ArchetypeDescriptor
descriptor,
- String packageName )
+ String packageName, String testSourceDirectory )
throws ArchetypeTemplateProcessingException
{
for ( Iterator i = descriptor.getTestSources().iterator(); i.hasNext(); )
@@ -604,7 +618,7 @@
String template = (String) i.next();
processTemplate( outputDirectory, context, template, descriptor.getTestSourceDescriptor(
template ), true,
- packageName );
+ packageName, testSourceDirectory );
}
}
@@ -648,7 +662,8 @@
}
protected void processTemplate( String outputDirectory, Context context, String template,
- TemplateDescriptor descriptor, boolean packageInFileName,
String packageName )
+ TemplateDescriptor descriptor, boolean packageInFileName,
String packageName,
+ String sourceDirectory )
throws ArchetypeTemplateProcessingException
{
File f;
@@ -663,9 +678,31 @@
String filename = FileUtils.filename( templateFileName );
- String dirname = FileUtils.dirname( templateFileName );
+ String dirname = FileUtils.dirname( templateFileName ).replace( '\\', '/' );
+
+ sourceDirectory = sourceDirectory.replace( '\\', '/' );
+ if ( sourceDirectory.startsWith( "/" ) )
+ {
+ sourceDirectory = sourceDirectory.substring( 1 );
+ }
+
+ if ( !dirname.startsWith( sourceDirectory ) )
+ {
+ throw new ArchetypeTemplateProcessingException(
+ "Template '" + template + "' not in directory '" + sourceDirectory +
"'" );
+ }
+
+ String extraPackages = dirname.substring( sourceDirectory.length() );
+ if ( extraPackages.startsWith( "/" ) )
+ {
+ extraPackages = extraPackages.substring( 1 );
+ }
+ if ( extraPackages.length() > 0 )
+ {
+ path += "/" + extraPackages;
+ }
- f = new File( new File( new File( outputDirectory, dirname ), path ), filename
);
+ f = new File( new File( new File( outputDirectory, sourceDirectory ), path ),
filename );
}
else
{
|