From 5c43ece6892a1629a6368a38258fbdc5ce159bed Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 29 Sep 2012 21:42:01 +0200 Subject: [PATCH] add pom files to scmp packages --- .../java/sonia/scm/maven/PackageMojo.java | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/maven/scm-maven-plugin/src/main/java/sonia/scm/maven/PackageMojo.java b/maven/scm-maven-plugin/src/main/java/sonia/scm/maven/PackageMojo.java index c4ef5500f0..29213f206a 100644 --- a/maven/scm-maven-plugin/src/main/java/sonia/scm/maven/PackageMojo.java +++ b/maven/scm-maven-plugin/src/main/java/sonia/scm/maven/PackageMojo.java @@ -38,10 +38,12 @@ import org.apache.commons.io.IOUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.deployer.ArtifactDeployer; import org.apache.maven.artifact.deployer.ArtifactDeploymentException; +import org.apache.maven.artifact.metadata.ArtifactMetadata; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.artifact.ProjectArtifactMetadata; //~--- JDK imports ------------------------------------------------------------ @@ -287,12 +289,17 @@ public class PackageMojo extends AbstractBaseScmMojo try { ArtifactRepository deploymentRepository = getDeploymentRepository(); + ArtifactMetadata metadata = new ProjectArtifactMetadata(pluginArtifact, + pomFile); - deployToDirectory(excludeList, deploymentRepository, pluginArtifact); + pluginArtifact.addMetadata(metadata); + + deployToDirectory(excludeList, deploymentRepository, pluginArtifact, + false); for (Artifact artifact : artifacts) { - deployToDirectory(excludeList, deploymentRepository, artifact); + deployToDirectory(excludeList, deploymentRepository, artifact, true); } } @@ -314,20 +321,46 @@ public class PackageMojo extends AbstractBaseScmMojo * @param excludeList * @param deploymentRepository * @param artifact + * @param resolveMetadata * * @throws ArtifactDeploymentException */ private void deployToDirectory(List excludeList, - ArtifactRepository deploymentRepository, Artifact artifact) + ArtifactRepository deploymentRepository, Artifact artifact, + boolean resolveMetadata) throws ArtifactDeploymentException { String id = getId(artifact); if (!excludeList.contains(id)) { - artifact.isSnapshot(); + if (resolveMetadata) + { + String path = localRepository.pathOf(artifact); + int lastIndex = path.lastIndexOf("."); + + if (lastIndex > 0) + { + path = path.substring(0, lastIndex).concat(".pom"); + + File pom = new File(localRepository.getBasedir(), path); + + if (pom.exists()) + { + ArtifactMetadata metadata = new ProjectArtifactMetadata(artifact, + pom); + + artifact.addMetadata(metadata); + } + else + { + getLog().warn("could not find pom at ".concat(path)); + } + } + } + File file = artifact.getFile(); deployer.deploy(file, artifact, deploymentRepository, localRepository); @@ -385,4 +418,11 @@ public class PackageMojo extends AbstractBaseScmMojo * @parameter expression="${packageFile}" default-value="${project.build.directory}/${project.artifactId}-${project.version}.scmp" */ private File packageFile; + + /** + * @parameter default-value="${project.file}" + * @required + * @readonly + */ + private File pomFile; }