Author: aramirez
Date: Mon Mar 27 00:19:25 2006
New Revision: 389062
URL: http://svn.apache.org/viewcvs?rev=389062&view=rev
Log:
PR:MSOURCES-2
Submitted By: Maria Odea Ching
new parameter "includeTestSources" was added. It indicates whether a jar file
that contains the test sources will be created or not. The jar file is named
${finalName}-test-sources.jar.
Modified:
maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
Modified:
maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java?rev=389062&r1=389061&r2=389062&view=diff
==============================================================================
---
maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
(original)
+++
maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
Mon Mar 27 00:19:25 2006
@@ -21,6 +21,7 @@
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
+import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.jar.JarArchiver;
import java.io.File;
@@ -96,6 +97,15 @@
*/
private File outputDirectory;
+ /**
+ * @parameter expression="${includeTestSources}" default="false"
+ */
+ private boolean includeTestSources;
+
+ private Archiver archiver;
+
+ private static SourceBundler sourceBundler;
+
public void execute()
throws MojoExecutionException
{
@@ -105,42 +115,41 @@
return;
}
-
// TODO: use a component lookup?
- JarArchiver archiver = new JarArchiver();
-
- SourceBundler sourceBundler = new SourceBundler();
+ archiver = new JarArchiver();
+ sourceBundler = new SourceBundler();
File outputFile = new File( outputDirectory, finalName +
"-sources.jar" );
-
List compileSourceRoots = executedProject.getCompileSourceRoots();
List resources = executedProject.getResources();
-
File[] sourceDirectories = new File[compileSourceRoots.size() +
resources.size()];
- int count = 0;
- for ( Iterator i = compileSourceRoots.iterator(); i.hasNext(); count++
)
- {
- sourceDirectories[count] = new File( (String) i.next() );
- }
- for ( Iterator i = resources.iterator(); i.hasNext(); count++ )
- {
- Resource resource = (Resource) i.next();
- sourceDirectories[count] = new File( resource.getDirectory() );
- }
+
+ sourceDirectories = addDirectories( compileSourceRoots, resources,
sourceDirectories );
try
{
- sourceBundler.makeSourceBundle( outputFile, sourceDirectories,
archiver );
+ createJar( outputFile, sourceDirectories );
}
catch ( Exception e )
{
throw new MojoExecutionException( "Error building source JAR", e );
}
+ if ( includeTestSources )
+ {
+ try
+ {
+ createTestSourcesJar();
+ }
+ catch ( Exception e )
+ {
+ throw new MojoExecutionException( "Error building source JAR",
e );
+ }
+ }
+
if ( !attach )
{
getLog().info( "NOT adding java-sources to attached artifacts
list." );
-
}
else
{
@@ -149,4 +158,62 @@
projectHelper.attachArtifact( project, "java-source", "sources",
outputFile );
}
}
+
+ /**
+ * Add the compile source directories and resource directories that will
be included in the jar file
+ *
+ * @param compileSourceRoots
+ * @param resources
+ * @param sourceDirectories
+ * @return an array of File objects that contains the directories that
will be included in the jar file
+ */
+ private File[] addDirectories( List compileSourceRoots, List resources,
File[] sourceDirectories )
+ {
+ int count = 0;
+ for ( Iterator i = compileSourceRoots.iterator(); i.hasNext(); count++
)
+ {
+ sourceDirectories[count] = new File( (String) i.next() );
+ }
+
+ for ( Iterator i = resources.iterator(); i.hasNext(); count++ )
+ {
+ Resource resource = (Resource) i.next();
+ sourceDirectories[count] = new File( resource.getDirectory() );
+ }
+
+ return sourceDirectories;
+ }
+
+ /**
+ * Create jar file that will contain the test sources
+ *
+ * @throws Exception
+ */
+ private void createTestSourcesJar()
+ throws Exception
+ {
+ File outputFile = new File( outputDirectory, finalName +
"-test-sources.jar" );
+ List testCompileSourceRoots =
executedProject.getTestCompileSourceRoots();
+ List testResources = executedProject.getTestResources();
+
+ File[] testSourceDirectories = new File[testCompileSourceRoots.size()
+ testResources.size()];
+ testSourceDirectories = addDirectories( testCompileSourceRoots,
testResources, testSourceDirectories );
+ archiver = new JarArchiver();
+
+ createJar( outputFile, testSourceDirectories );
+ }
+
+ /**
+ * Create jar file that contains the specified source directories
+ *
+ * @param outputFile the file name of the jar
+ * @param sourceDirectories the source directories that will be included
in the jar file
+ * @throws Exception
+ */
+ private void createJar( File outputFile, File[] sourceDirectories )
+ throws Exception
+ {
+ sourceBundler.makeSourceBundle( outputFile, sourceDirectories,
archiver );
+ }
+
}