You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2011/01/04 23:57:09 UTC
svn commit: r1055234 - in
/maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install:
AbstractInstallMojo.java InstallFileMojo.java InstallMojo.java
Author: bentmann
Date: Tue Jan 4 22:57:08 2011
New Revision: 1055234
URL: http://svn.apache.org/viewvc?rev=1055234&view=rev
Log:
[MINSTALL-81] Checksums of metadata files are not always correct in case of attached artifacts
Modified:
maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/AbstractInstallMojo.java
maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java
maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java
Modified: maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/AbstractInstallMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/AbstractInstallMojo.java?rev=1055234&r1=1055233&r2=1055234&view=diff
==============================================================================
--- maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/AbstractInstallMojo.java (original)
+++ maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/AbstractInstallMojo.java Tue Jan 4 22:57:08 2011
@@ -118,17 +118,18 @@ public abstract class AbstractInstallMoj
}
/**
- * Installs the checksums for the specified artifact (and its metadata files) if this has been enabled in the plugin
- * configuration. This method creates checksums for files that have already been installed to the local repo to
- * account for on-the-fly generated/updated files. For example, in Maven 2.0.4- the
- * <code>ProjectArtifactMetadata</code> did not install the original POM file (cf. MNG-2820). While the plugin
- * currently requires Maven 2.0.6, we continue to hash the installed POM for robustness with regard to future
- * changes like re-introducing some kind of POM filtering.
- *
+ * Installs the checksums for the specified artifact if this has been enabled in the plugin configuration. This
+ * method creates checksums for files that have already been installed to the local repo to account for on-the-fly
+ * generated/updated files. For example, in Maven 2.0.4- the <code>ProjectArtifactMetadata</code> did not install
+ * the original POM file (cf. MNG-2820). While the plugin currently requires Maven 2.0.6, we continue to hash the
+ * installed POM for robustness with regard to future changes like re-introducing some kind of POM filtering.
+ *
* @param artifact The artifact for which to create checksums, must not be <code>null</code>.
+ * @param metadataFiles The set where additional metadata files will be registered for later checksum installation,
+ * must not be <code>null</code>.
* @throws MojoExecutionException If the checksums could not be installed.
*/
- protected void installChecksums( Artifact artifact )
+ protected void installChecksums( Artifact artifact, Collection metadataFiles )
throws MojoExecutionException
{
if ( !createChecksum )
@@ -146,12 +147,28 @@ public abstract class AbstractInstallMoj
{
ArtifactMetadata metadata = (ArtifactMetadata) it.next();
File metadataFile = getLocalRepoFile( metadata );
- installChecksums( metadataFile );
+ metadataFiles.add( metadataFile );
}
}
}
/**
+ * Installs the checksums for the specified metadata files.
+ *
+ * @param metadataFiles The collection of metadata files to install checksums for, must not be <code>null</code>.
+ * @throws MojoExecutionException If the checksums could not be installed.
+ */
+ protected void installChecksums( Collection metadataFiles )
+ throws MojoExecutionException
+ {
+ for ( Iterator it = metadataFiles.iterator(); it.hasNext(); )
+ {
+ File metadataFile = (File) it.next();
+ installChecksums( metadataFile );
+ }
+ }
+
+ /**
* Installs the checksums for the specified file (if it exists).
*
* @param installedFile The path to the already installed file in the local repo for which to generate checksums,
Modified: maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java?rev=1055234&r1=1055233&r2=1055234&view=diff
==============================================================================
--- maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java (original)
+++ maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallFileMojo.java Tue Jan 4 22:57:08 2011
@@ -44,6 +44,8 @@ import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.net.MalformedURLException;
+import java.util.Collection;
+import java.util.LinkedHashSet;
import java.util.Map;
/**
@@ -245,12 +247,14 @@ public class InstallFileMojo
artifact.setRelease( true );
}
+ Collection metadataFiles = new LinkedHashSet();
+
// TODO: maybe not strictly correct, while we should enforce that packaging has a type handler of the same id,
// we don't
try
{
installer.install( file, artifact, localRepository );
- installChecksums( artifact );
+ installChecksums( artifact, metadataFiles );
}
catch ( ArtifactInstallationException e )
{
@@ -271,7 +275,7 @@ public class InstallFileMojo
try
{
installer.install( sources, artifact, localRepository );
- installChecksums( artifact );
+ installChecksums( artifact, metadataFiles );
}
catch ( ArtifactInstallationException e )
{
@@ -285,13 +289,15 @@ public class InstallFileMojo
try
{
installer.install( javadoc, artifact, localRepository );
- installChecksums( artifact );
+ installChecksums( artifact, metadataFiles );
}
catch ( ArtifactInstallationException e )
{
throw new MojoExecutionException( "Error installing API docs " + javadoc + ": " + e.getMessage(), e );
}
}
+
+ installChecksums( metadataFiles );
}
/**
Modified: maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java?rev=1055234&r1=1055233&r2=1055234&view=diff
==============================================================================
--- maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java (original)
+++ maven/plugins/trunk/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java Tue Jan 4 22:57:08 2011
@@ -26,7 +26,9 @@ import org.apache.maven.plugin.MojoExecu
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
import java.io.File;
+import java.util.Collection;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
/**
@@ -84,10 +86,12 @@ public class InstallMojo
try
{
+ Collection metadataFiles = new LinkedHashSet();
+
if ( isPomArtifact )
{
installer.install( pomFile, artifact, localRepository );
- installChecksums( artifact );
+ installChecksums( artifact, metadataFiles );
}
else
{
@@ -101,7 +105,7 @@ public class InstallMojo
if ( file != null && file.isFile() )
{
installer.install( file, artifact, localRepository );
- installChecksums( artifact );
+ installChecksums( artifact, metadataFiles );
}
else if ( !attachedArtifacts.isEmpty() )
{
@@ -117,7 +121,7 @@ public class InstallMojo
}
installer.install( pomFile, pomArtifact, localRepository );
- installChecksums( pomArtifact );
+ installChecksums( pomArtifact, metadataFiles );
}
else
{
@@ -131,8 +135,10 @@ public class InstallMojo
Artifact attached = (Artifact) i.next();
installer.install( attached.getFile(), attached, localRepository );
- installChecksums( attached );
+ installChecksums( attached, metadataFiles );
}
+
+ installChecksums( metadataFiles );
}
catch ( ArtifactInstallationException e )
{