Author: jfallows
Date: Tue Aug 23 22:06:56 2011
New Revision: 1160899
URL: http://svn.apache.org/viewvc?rev=1160899&view=rev
Log:
Fix NPANDAY-466 - Dependencies fail to resolve in multi-module build up to
phase verify (but not install)
Modified:
incubator/npanday/trunk/components/dotnet-artifact/src/main/java/npanday/artifact/impl/AssemblyResolverImpl.java
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/PathUtil.java
Modified:
incubator/npanday/trunk/components/dotnet-artifact/src/main/java/npanday/artifact/impl/AssemblyResolverImpl.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-artifact/src/main/java/npanday/artifact/impl/AssemblyResolverImpl.java?rev=1160899&r1=1160898&r2=1160899&view=diff
==============================================================================
---
incubator/npanday/trunk/components/dotnet-artifact/src/main/java/npanday/artifact/impl/AssemblyResolverImpl.java
(original)
+++
incubator/npanday/trunk/components/dotnet-artifact/src/main/java/npanday/artifact/impl/AssemblyResolverImpl.java
Tue Aug 23 22:06:56 2011
@@ -26,18 +26,26 @@ import npanday.dao.ProjectDaoException;
import npanday.dao.ProjectDependency;
import org.apache.maven.project.MavenProject;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.model.Dependency;
-
import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.logging.Logger;
+import java.util.Collections;
import java.util.Set;
import java.util.HashSet;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.io.File;
import java.io.IOException;
@@ -123,6 +131,8 @@ public class AssemblyResolverImpl
project.addProjectDependency( projectDependency );
}
+ artifactResolver = new AssemblyArtifactResolver( artifactResolver,
mavenProject );
+
ProjectDao dao = (ProjectDao) daoRegistry.find( "dao:project" );
dao.init( artifactFactory, artifactResolver );
dao.openConnection();
@@ -147,4 +157,82 @@ public class AssemblyResolverImpl
mavenProject.setDependencyArtifacts( artifactDependencies );
}
}
+
+ private static final class AssemblyArtifactResolver implements
ArtifactResolver
+ {
+ private final ArtifactResolver delegate;
+ private final Map mavenProjectRefs;
+
+ public AssemblyArtifactResolver( ArtifactResolver delegate,
MavenProject mavenProject )
+ {
+ this.delegate = delegate;
+ this.mavenProjectRefs = mavenProject.getProjectReferences();
+ }
+
+ public void resolve(Artifact artifact, List remoteRepositories,
ArtifactRepository localRepository) throws ArtifactResolutionException,
ArtifactNotFoundException
+ {
+ String mavenProjectRefId = artifact.getGroupId() + ":" +
artifact.getArtifactId() + ":" + artifact.getVersion();
+ MavenProject mavenProjectRef = (MavenProject)
mavenProjectRefs.get( mavenProjectRefId );
+ if ( mavenProjectRef != null )
+ {
+ if ( "pom".equals( artifact.getType() ) )
+ {
+ artifact.setFile( mavenProjectRef.getFile() );
+ return;
+ }
+ else
+ {
+ Map artifactMapByArtifactId = new HashMap();
+ artifactMapByArtifactId.putAll(
ArtifactUtils.artifactMapByArtifactId( Collections.singleton(
mavenProjectRef.getArtifact() ) ) );
+ artifactMapByArtifactId.putAll(
ArtifactUtils.artifactMapByArtifactId( mavenProjectRef.getArtifacts() ) );
+ artifactMapByArtifactId.putAll(
ArtifactUtils.artifactMapByArtifactId( mavenProjectRef.getAttachedArtifacts() )
);
+
+ Artifact projectArtifact = (Artifact)
artifactMapByArtifactId.get( artifact.getId() );
+ if ( projectArtifact != null )
+ {
+ artifact.setFile( projectArtifact.getFile() );
+ return;
+ }
+ }
+ }
+
+ delegate.resolve( artifact, remoteRepositories, localRepository );
+ }
+
+ public void resolveAlways(Artifact artifact, List remoteRepositories,
ArtifactRepository localRepository) throws ArtifactResolutionException,
ArtifactNotFoundException
+ {
+ delegate.resolveAlways( artifact, remoteRepositories,
localRepository );
+ }
+
+ public ArtifactResolutionResult resolveTransitively(Set artifacts,
Artifact originatingArtifact, ArtifactRepository localRepository, List
remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter)
throws ArtifactResolutionException, ArtifactNotFoundException
+ {
+ return delegate.resolveTransitively( artifacts,
originatingArtifact, localRepository, remoteRepositories, source, filter);
+ }
+
+ public ArtifactResolutionResult resolveTransitively(Set artifacts,
Artifact originatingArtifact, List remoteRepositories, ArtifactRepository
localRepository, ArtifactMetadataSource source) throws
ArtifactResolutionException, ArtifactNotFoundException
+ {
+ return delegate.resolveTransitively( artifacts,
originatingArtifact, remoteRepositories, localRepository, source);
+ }
+
+ public ArtifactResolutionResult resolveTransitively(Set artifacts,
Artifact originatingArtifact, List remoteRepositories, ArtifactRepository
localRepository, ArtifactMetadataSource source, List listeners) throws
ArtifactResolutionException, ArtifactNotFoundException
+ {
+ return delegate.resolveTransitively( artifacts,
originatingArtifact, remoteRepositories, localRepository, source, listeners);
+ }
+
+ public ArtifactResolutionResult resolveTransitively(Set artifacts,
Artifact originatingArtifact, Map managedVersions, ArtifactRepository
localRepository, List remoteRepositories, ArtifactMetadataSource source) throws
ArtifactResolutionException, ArtifactNotFoundException
+ {
+ return delegate.resolveTransitively( artifacts,
originatingArtifact, managedVersions, localRepository, remoteRepositories,
source);
+ }
+
+ public ArtifactResolutionResult resolveTransitively(Set artifacts,
Artifact originatingArtifact, Map managedVersions, ArtifactRepository
localRepository, List remoteRepositories, ArtifactMetadataSource source,
ArtifactFilter filter) throws ArtifactResolutionException,
ArtifactNotFoundException
+ {
+ return delegate.resolveTransitively( artifacts,
originatingArtifact, managedVersions, localRepository, remoteRepositories,
source, filter);
+ }
+
+ public ArtifactResolutionResult resolveTransitively(Set artifacts,
Artifact originatingArtifact, Map managedVersions, ArtifactRepository
localRepository, List remoteRepositories, ArtifactMetadataSource source,
ArtifactFilter filter, List listeners) throws ArtifactResolutionException,
ArtifactNotFoundException
+ {
+ return delegate.resolveTransitively( artifacts,
originatingArtifact, managedVersions, localRepository, remoteRepositories,
source, filter, listeners);
+ }
+ }
+
}
\ No newline at end of file
Modified:
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/PathUtil.java
URL:
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/PathUtil.java?rev=1160899&r1=1160898&r2=1160899&view=diff
==============================================================================
---
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/PathUtil.java
(original)
+++
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/PathUtil.java
Tue Aug 23 22:06:56 2011
@@ -235,8 +235,10 @@ public final class PathUtil
try
- {
- FileUtils.copyFile(new File( source ), targetFile);
+ {
+ File artifactFile = artifact.getFile();
+ File sourceFile = ( artifactFile != null &&
artifactFile.exists() ) ? artifactFile : new File( source );
+ FileUtils.copyFile( sourceFile, targetFile );
}
catch (IOException ioe)
{