Author: lcorneliussen
Date: Fri Apr 27 19:06:52 2012
New Revision: 1331545
URL: http://svn.apache.org/viewvc?rev=1331545&view=rev
Log:
[NPANDAY-556] Importer for Nuget Packages
o now only installs or deploys once to a repo
o after clean, it'll install everything again
Modified:
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java
Modified:
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
---
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
(original)
+++
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/AbstractDeployMojo.java
Fri Apr 27 19:06:52 2012
@@ -115,10 +115,11 @@ public abstract class AbstractDeployMojo
*
* @param source the file to deploy
* @param artifact the artifact definition
+ * @param deploymentRepo
* @throws ArtifactDeploymentException if an error occurred deploying the
artifact
*/
protected void deploy(
- File source, Artifact artifact ) throws MojoExecutionException,
MojoFailureException
+ File source, Artifact artifact, ArtifactRepository deploymentRepo )
throws MojoExecutionException, MojoFailureException
{
int retryFailedDeploymentCount = Math.max( 1, Math.min( 10,
this.retryFailedDeploymentCount ) );
ArtifactDeploymentException exception = null;
@@ -133,7 +134,8 @@ public abstract class AbstractDeployMojo
+ retryFailedDeploymentCount
);
}
- deployer.deploy( source, artifact, getDeploymentRepository(),
getLocalArtifactRepository() );
+ deployer.deploy( source, artifact, deploymentRepo,
getLocalArtifactRepository() );
+
exception = null;
break;
}
Modified:
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
---
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
(original)
+++
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/deploy/DeployLibraries.java
Fri Apr 27 19:06:52 2012
@@ -19,20 +19,11 @@
package npanday.plugin.libraryimporter.deploy;
-import com.google.common.base.Strings;
-import npanday.plugin.libraryimporter.model.NugetPackage;
import npanday.plugin.libraryimporter.model.NugetPackageLibrary;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.installer.ArtifactInstallationException;
-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.artifact.repository.layout.DefaultRepositoryLayout;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-
-import java.io.File;
/**
* Mojo for deploying the resolved libraries to the local repository.
@@ -46,7 +37,27 @@ public class DeployLibraries
@Override
protected void handleGeneratedArtifacts( NugetPackageLibrary lib, Artifact
artifact ) throws MojoExecutionException, MojoFailureException
{
- deploy( artifact.getFile(), artifact );
+ ArtifactRepository repo = getDeploymentRepository();
+ if (lib.getMarkerFileFor( artifact, repo ).exists()){
+ if ( getLog().isDebugEnabled() )
+ {
+ getLog().debug(
+ "NPANDAY-152-002: artifact " + artifact.getId() + " has
yet been deployed to " + repo.getUrl()
+ );
+ }
+ }
+
+ if ( getLog().isDebugEnabled() )
+ {
+ getLog().debug(
+ "NPANDAY-152-001: deploying artifact " + artifact.getId() + "
to " + repo.getUrl()
+ );
+ }
+
+
+ deploy( artifact.getFile(), artifact, repo );
+
+ markDeployed( lib, artifact, repo );
}
}
Modified:
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
---
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
(original)
+++
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/AbstractInstallMojo.java
Fri Apr 27 19:06:52 2012
@@ -24,6 +24,7 @@ import npanday.plugin.libraryimporter.mo
import npanday.plugin.libraryimporter.skeletons.AbstractHandleEachLibraryMojo;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.installer.ArtifactInstallationException;
import org.apache.maven.artifact.installer.ArtifactInstaller;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -125,7 +126,9 @@ public abstract class AbstractInstallMoj
*/
protected File getLocalRepoFile( ArtifactMetadata metadata )
{
- String path =
getLocalArtifactRepository().pathOfLocalRepositoryMetadata( metadata,
getLocalArtifactRepository() );
+ String path =
getLocalArtifactRepository().pathOfLocalRepositoryMetadata(
+ metadata, getLocalArtifactRepository()
+ );
return new File( getLocalArtifactRepository().getBasedir(), path );
}
@@ -140,8 +143,7 @@ public abstract class AbstractInstallMoj
* @param artifact The artifact for which to create checksums, must not be
<code>null</code>.
* @throws MojoExecutionException If the checksums could not be installed.
*/
- protected void installChecksums( Artifact artifact )
- throws MojoExecutionException
+ protected void installChecksums( Artifact artifact ) throws
MojoExecutionException
{
if ( !createChecksums )
{
@@ -167,11 +169,10 @@ public abstract class AbstractInstallMoj
* 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,
- * must not be <code>null</code>.
+ * must not be <code>null</code>.
* @throws MojoExecutionException If the checksums could not be installed.
*/
- private void installChecksums( File installedFile )
- throws MojoExecutionException
+ private void installChecksums( File installedFile ) throws
MojoExecutionException
{
boolean signatureFile = installedFile.getName().endsWith( ".asc" );
if ( installedFile.isFile() && !signatureFile )
@@ -184,16 +185,16 @@ public abstract class AbstractInstallMoj
/**
* Installs a checksum for the specified file.
*
- * @param originalFile The path to the file from which the checksum is
generated, must not be <code>null</code>.
+ * @param originalFile The path to the file from which the checksum is
generated, must not be <code>null</code>.
* @param installedFile The base path from which the path to the checksum
files is derived by appending the given
- * file extension, must not be <code>null</code>.
- * @param digester The checksum algorithm to use, must not be
<code>null</code>.
- * @param ext The file extension (including the leading dot) to use for
the checksum file, must not be
- * <code>null</code>.
+ * file extension, must not be <code>null</code>.
+ * @param digester The checksum algorithm to use, must not be
<code>null</code>.
+ * @param ext The file extension (including the leading dot) to
use for the checksum file, must not be
+ * <code>null</code>.
* @throws MojoExecutionException If the checksum could not be installed.
*/
- private void installChecksum( File originalFile, File installedFile,
Digester digester, String ext )
- throws MojoExecutionException
+ private void installChecksum( File originalFile, File installedFile,
Digester digester, String ext ) throws
+ MojoExecutionException
{
String checksum;
getLog().debug( "Calculating " + digester.getAlgorithm() + " checksum
for " + originalFile );
@@ -203,8 +204,9 @@ public abstract class AbstractInstallMoj
}
catch ( DigesterException e )
{
- throw new MojoExecutionException( "Failed to calculate " +
digester.getAlgorithm() + " checksum for "
- + originalFile, e );
+ throw new MojoExecutionException(
+ "Failed to calculate " + digester.getAlgorithm() + " checksum
for " + originalFile, e
+ );
}
File checksumFile = new File( installedFile.getAbsolutePath() + ext );
@@ -223,12 +225,15 @@ public abstract class AbstractInstallMoj
protected ArtifactRepository getLocalArtifactRepository()
{
ArtifactRepositoryLayout layout = new DefaultRepositoryLayout();
- if (!Strings.isNullOrEmpty( localRepository )) {
+ if ( !Strings.isNullOrEmpty( localRepository ) )
+ {
String localRepoUrl = new File( localRepository
).toURI().toString();
getLog().info( "NPANDAY-146-002: Using alternate local repository
" + localRepository );
- localArtifactRepository =
artifactRepositoryFactory.createArtifactRepository( "library-importer-local",
localRepoUrl, layout, null, null );
+ localArtifactRepository =
artifactRepositoryFactory.createArtifactRepository(
+ "library-importer-local", localRepoUrl, layout, null, null
+ );
}
return localArtifactRepository;
}
@@ -247,6 +252,32 @@ public abstract class AbstractInstallMoj
handleGeneratedArtifacts( lib, artifact );
}
- protected abstract void handleGeneratedArtifacts( NugetPackageLibrary lib,
Artifact artifact ) throws MojoExecutionException,
+ protected void install( NugetPackageLibrary lib, Artifact artifact,
ArtifactRepository localRepository ) throws
+ ArtifactInstallationException,
+ MojoExecutionException
+ {
+
+ installer.install( lib.getMavenArtifactFile(), artifact,
localRepository );
+ }
+
+ protected void markDeployed( NugetPackageLibrary lib, Artifact artifact,
ArtifactRepository repo ) throws
+ MojoExecutionException
+ {
+ File markerFile = lib.getMarkerFileFor( artifact, repo );
+
+ try
+ {
+ markerFile.createNewFile();
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException(
+ "NPANDAY-146-003: Error creating marker file for " +
repo.getUrl() + ": " + markerFile.toPath()
+ );
+ }
+ }
+
+ protected abstract void handleGeneratedArtifacts( NugetPackageLibrary lib,
Artifact artifact ) throws
+ MojoExecutionException,
MojoFailureException;
}
Modified:
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
---
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
(original)
+++
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/install/InstallLibraries.java
Fri Apr 27 19:06:52 2012
@@ -22,6 +22,7 @@ package npanday.plugin.libraryimporter.i
import npanday.plugin.libraryimporter.model.NugetPackageLibrary;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.installer.ArtifactInstallationException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugin.MojoExecutionException;
/**
@@ -36,6 +37,18 @@ public class InstallLibraries
@Override
protected void handleGeneratedArtifacts( NugetPackageLibrary lib, Artifact
artifact ) throws MojoExecutionException
{
+ ArtifactRepository repo = getLocalArtifactRepository();
+
+ if (lib.getMarkerFileFor( artifact, repo ).exists()){
+ if ( getLog().isDebugEnabled() )
+ {
+ getLog().debug(
+ "NPANDAY-146-002: artifact has yet been installed to local
repository: " + artifact.getId()
+ );
+ }
+ return;
+ }
+
if ( getLog().isDebugEnabled() )
{
getLog().debug(
@@ -45,7 +58,9 @@ public class InstallLibraries
try
{
- installer.install( lib.getMavenArtifactFile(), artifact,
getLocalArtifactRepository() );
+ install( lib, artifact, repo );
+
+ markDeployed( lib, artifact, repo);
}
catch ( ArtifactInstallationException e )
{
Modified:
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java?rev=1331545&r1=1331544&r2=1331545&view=diff
==============================================================================
---
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java
(original)
+++
incubator/npanday/trunk/plugins/library-importer-maven-plugin/src/main/java/npanday/plugin/libraryimporter/model/NugetPackageLibrary.java
Fri Apr 27 19:06:52 2012
@@ -27,10 +27,15 @@ import npanday.plugin.libraryimporter.As
import npanday.plugin.libraryimporter.LibImporterPathUtils;
import npanday.plugin.libraryimporter.ManifestInfoParser;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Model;
import org.apache.maven.plugin.MojoExecutionException;
import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.util.Collection;
import java.util.List;
@@ -262,4 +267,30 @@ public class NugetPackageLibrary
String folderName = getMavenGroupId() + "_" + getMavenArtifactId() +
"_" + getMavenPackaging() + "_" + getMavenVersion();
return new File( mavenProjectsCacheDirectory, folderName);
}
+
+ public File getMarkerFileFor( Artifact artifact, ArtifactRepository repo )
+ throws MojoExecutionException
+ {
+ try
+ {
+ byte[] bytesOfMessage = (artifact.getId() +
repo.getUrl()).getBytes("UTF-8");
+ MessageDigest md = MessageDigest.getInstance( "MD5" );
+ byte[] digest = md.digest(bytesOfMessage);
+ BigInteger bigInt = new BigInteger(1,digest);
+ String hashtext = bigInt.toString(16);
+ while(hashtext.length() < 32 ){
+ hashtext = "0"+hashtext;
+ }
+ return new File( getMavenProjectFolder(), hashtext +
".deploy-marker");
+ }
+ catch ( UnsupportedEncodingException e )
+ {
+ throw new MojoExecutionException("NPANDAY-145-005: Couldn't get
the UTF-8 bytes", e);
+
+ }
+ catch ( NoSuchAlgorithmException e )
+ {
+ throw new MojoExecutionException("NPANDAY-145-006: Couldn't find
MD5 algorithm", e);
+ }
+ }
}