diff --git a/maven-plugins/maven-source-plugin/pom.xml b/maven-plugins/maven-source-plugin/pom.xml
index 2e2395c7e9..76cfa1801d 100644
--- a/maven-plugins/maven-source-plugin/pom.xml
+++ b/maven-plugins/maven-source-plugin/pom.xml
@@ -21,5 +21,15 @@
1.0-alpha-4-SNAPSHOT
test
+
+ org.apache.maven
+ maven-project
+ 2.0-SNAPSHOT
+
+
+ org.apache.maven
+ maven-artifact
+ 2.0-SNAPSHOT
+
diff --git a/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java b/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
index 801f70962c..01c93831fc 100644
--- a/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
+++ b/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
@@ -16,8 +16,11 @@ package org.apache.maven.plugin.source;
* limitations under the License.
*/
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.archiver.jar.JarArchiver;
import java.io.File;
@@ -35,11 +38,16 @@ public class JarSourceMojo
extends AbstractMojo
{
/**
- * @parameter expression="${project.version}"
+ * @parameter expression="${project}"
* @readonly
* @required
*/
- private String version;
+ private MavenProject project;
+
+ /**
+ * @parameter expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}
+ */
+ private ArtifactFactory artifactFactory;
/**
* @parameter expression="${project.build.finalName}"
@@ -54,7 +62,7 @@ public class JarSourceMojo
private List compileSourceRoots;
/**
- * @parameter expression="${project.build.outputDirectory}"
+ * @parameter expression="${project.build.directory}"
* @required
*/
private File outputDirectory;
@@ -63,7 +71,7 @@ public class JarSourceMojo
throws MojoExecutionException
{
// TODO: this should be via a release profile instead
- if ( version.indexOf( "SNAPSHOT" ) < 0 )
+ if ( project.getVersion().indexOf( "SNAPSHOT" ) < 0 )
{
// TODO: use a component lookup?
JarArchiver archiver = new JarArchiver();
@@ -87,6 +95,14 @@ public class JarSourceMojo
{
throw new MojoExecutionException( "Error building source JAR", e );
}
+
+ // TODO: these introduced dependencies on the project are going to become problematic - can we export it
+ // through metadata instead?
+ Artifact artifact = artifactFactory.createArtifactWithClassifier( project.getGroupId(),
+ project.getArtifactId(),
+ project.getVersion(), null, "java-source",
+ "sources" );
+ project.addAttachedArtifact( artifact );
}
else
{
diff --git a/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/SourceBundler.java b/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/SourceBundler.java
index dd9b1fd5e7..0712792c42 100644
--- a/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/SourceBundler.java
+++ b/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/SourceBundler.java
@@ -1,23 +1,18 @@
package org.apache.maven.plugin.source;
-import java.io.File;
-
import org.codehaus.plexus.archiver.Archiver;
+import java.io.File;
+
/**
* @author Trygve Laugstøl
* @version $Id$
*/
public class SourceBundler
{
- private final static String[] DEFAULT_INCLUDES = new String[]{
- "**/*",
- };
+ private final static String[] DEFAULT_INCLUDES = new String[]{"**/*",};
- private final static String[] DEFAULT_EXCLUDES = new String[]{
- "**/CVS/**",
- "**/.svn/**",
- };
+ private final static String[] DEFAULT_EXCLUDES = new String[]{"**/CVS/**", "**/.svn/**",};
public void makeSourceBundle( File outputFile, File[] sourceDirectories, Archiver archiver )
throws Exception
@@ -28,7 +23,10 @@ public class SourceBundler
for ( int i = 0; i < sourceDirectories.length; i++ )
{
- archiver.addDirectory( sourceDirectories[ i ], includes, excludes );
+ if ( sourceDirectories[i].exists() )
+ {
+ archiver.addDirectory( sourceDirectories[i], includes, excludes );
+ }
}
archiver.setDestFile( outputFile );