Author: hboutemy
Date: Sun Dec 2 14:37:47 2007
New Revision: 600396
URL: http://svn.apache.org/viewvc?rev=600396&view=rev
Log:
[MANTTASKS-91] added ProfileManager use, which fixes resolution bug
Modified:
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/sample.build.xml
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/Pom.java
Modified: maven/ant-tasks/branches/maven-ant-tasks-2.0.x/sample.build.xml
URL:
http://svn.apache.org/viewvc/maven/ant-tasks/branches/maven-ant-tasks-2.0.x/sample.build.xml?rev=600396&r1=600395&r2=600396&view=diff
==============================================================================
--- maven/ant-tasks/branches/maven-ant-tasks-2.0.x/sample.build.xml (original)
+++ maven/ant-tasks/branches/maven-ant-tasks-2.0.x/sample.build.xml Sun Dec 2
14:37:47 2007
@@ -40,7 +40,7 @@
</target>
<target name="test-all-deps" description="All dependencies tests"
-
depends="test-pom,test-pom-with-parent,test-no-deps,test-pom-deps,test-deps-two-repos,test-deps,test-legacy-pom,test-deps-mirror,test-deps-order">
+
depends="test-pom,test-pom-with-parent,test-no-deps,test-pom-deps,test-deps-two-repos,test-deps,test-legacy-pom,test-deps-mirror,test-deps-order,test-deps-MANTTASKS-91">
<echo>test-bad-dep and test-invalid-pom-ref must be run manually, since
they are intended to fail</echo>
</target>
Modified:
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
URL:
http://svn.apache.org/viewvc/maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java?rev=600396&r1=600395&r2=600396&view=diff
==============================================================================
---
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
(original)
+++
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
Sun Dec 2 14:37:47 2007
@@ -27,9 +27,12 @@
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.DefaultArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.model.Model;
+import org.apache.maven.profiles.DefaultProfileManager;
+import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.profiles.activation.ProfileActivationException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.RuntimeInfo;
import org.apache.maven.settings.Server;
@@ -82,6 +85,8 @@
private Settings settings;
+ private ProfileManager profileManager;
+
private PlexusContainer container;
private Pom pom;
@@ -270,6 +275,8 @@
settings.setLocalRepository( location );
}
+ profileManager = new DefaultProfileManager( getContainer(),
getSettings(), System.getProperties() );
+
WagonManager wagonManager = (WagonManager) lookup( WagonManager.ROLE );
wagonManager.setDownloadMonitor( new AntDownloadMonitor() );
if ( settings.isOffline() )
@@ -520,16 +527,19 @@
return pom;
}
- protected Pom createDummyPom()
+ protected Pom createDummyPom( ArtifactRepository localArtifactRepository )
{
- Model mavenModel = new Model();
-
- mavenModel.setGroupId( "unspecified" );
- mavenModel.setArtifactId( "unspecified" );
- mavenModel.setVersion( "0.0" );
- mavenModel.setPackaging( "jar" );
+ MavenProjectBuilder projectBuilder = (MavenProjectBuilder) lookup(
MavenProjectBuilder.ROLE );
- MavenProject mavenProject = new MavenProject( mavenModel );
+ MavenProject mavenProject;
+ try
+ {
+ mavenProject =
projectBuilder.buildStandaloneSuperProject( localArtifactRepository,
getProfileManager() );
+ }
+ catch (ProjectBuildingException e)
+ {
+ throw new BuildException( "Unable to create dummy Pom", e );
+ }
Pom pom = new Pom();
@@ -540,11 +550,9 @@
protected Artifact createDummyArtifact()
{
- Pom pom = createDummyPom();
ArtifactFactory factory = (ArtifactFactory) lookup(
ArtifactFactory.ROLE );
// TODO: maybe not strictly correct, while we should enforce that
packaging has a type handler of the same id, we don't
- return factory.createBuildArtifact( pom.getGroupId(),
pom.getArtifactId(), pom.getVersion(),
- pom.getPackaging() );
+ return factory.createBuildArtifact( "unspecified", "unspecified",
"0.0", "jar" );
}
public String[] getSupportedProtocols()
@@ -612,6 +620,11 @@
public LocalRepository getLocalRepository()
{
return localRepository;
+ }
+
+ protected ProfileManager getProfileManager()
+ {
+ return profileManager;
}
public void addLocalRepository( LocalRepository localRepository )
Modified:
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
URL:
http://svn.apache.org/viewvc/maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java?rev=600396&r1=600395&r2=600396&view=diff
==============================================================================
---
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
(original)
+++
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
Sun Dec 2 14:37:47 2007
@@ -101,19 +101,19 @@
}
dependencies = pom.getDependencies();
-
- for ( Iterator i = pom.getRepositories().iterator(); i.hasNext(); )
- {
- Repository pomRepository = (Repository) i.next();
-
- addRemoteRepository( createAntRemoteRepository( pomRepository
) );
- }
}
else
{
// we have to have some sort of Pom object in order to satisfy the
requirements for building the
// originating Artifact below...
- pom = createDummyPom();
+ pom = createDummyPom( localRepo );
+ }
+
+ for ( Iterator i = pom.getRepositories().iterator(); i.hasNext(); )
+ {
+ Repository pomRepository = (Repository) i.next();
+
+ addRemoteRepository( createAntRemoteRepository( pomRepository ) );
}
if ( dependencies.isEmpty() )
Modified:
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/Pom.java
URL:
http://svn.apache.org/viewvc/maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/Pom.java?rev=600396&r1=600395&r2=600396&view=diff
==============================================================================
---
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/Pom.java
(original)
+++
maven/ant-tasks/branches/maven-ant-tasks-2.0.x/src/main/java/org/apache/maven/artifact/ant/Pom.java
Sun Dec 2 14:37:47 2007
@@ -20,39 +20,25 @@
*/
import org.apache.maven.artifact.Artifact;
-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.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.model.Build;
import org.apache.maven.model.CiManagement;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.IssueManagement;
-import org.apache.maven.model.Model;
import org.apache.maven.model.Organization;
-import org.apache.maven.model.Parent;
import org.apache.maven.model.Reporting;
import org.apache.maven.model.Scm;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.MavenProjectHelper;
import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.artifact.MavenMetadataSource;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.PropertyHelper;
-import org.codehaus.plexus.util.ReaderFactory;
import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Collections;
import java.util.List;
/**
@@ -162,12 +148,9 @@
// TODO: should this be in execute() too? Would that work when it is
used as a type?
if ( file != null )
{
- checkParentPom();
-
try
{
- // TODO: should the profiles be constructed and passed in
here? From Ant, or perhaps settings?
- mavenProject = builder.build( file, localRepository, null );
+ mavenProject = builder.build( file, localRepository,
getProfileManager() );
}
catch ( ProjectBuildingException e )
{
@@ -177,56 +160,6 @@
else if ( refid != null )
{
getInstance().initialise( builder, localRepository );
- }
- }
-
- private void checkParentPom()
- {
- Model model = null;
- try
- {
- Reader reader = ReaderFactory.newXmlReader( file );
- model = new MavenXpp3Reader().read( reader );
- }
- catch ( IOException e )
- {
- throw new BuildException( "IO error while reading pom: " +
e.getMessage(), e );
- }
- catch ( XmlPullParserException e )
- {
- throw new BuildException( "Error parsing pom: " + e.getMessage(),
e );
- }
-
- if ( model.getParent() != null && model.getParent().getRelativePath()
!= null )
- {
- // resolve parent pom
- Parent parent = model.getParent();
- String groupId = parent.getGroupId();
- String artifactId = parent.getArtifactId();
- String version = parent.getVersion();
-
- ArtifactFactory factory = (ArtifactFactory) lookup(
ArtifactFactory.ROLE );
- Artifact parentArtifact = factory.createParentArtifact( groupId,
artifactId, version );
-
- try
- {
- MavenMetadataSource metadataSource = (MavenMetadataSource)
lookup( ArtifactMetadataSource.ROLE );
- ArtifactResolver resolver = (ArtifactResolver) lookup(
ArtifactResolver.ROLE );
- List remoteRepositories = createRemoteArtifactRepositories();
-
- resolver.resolveTransitively( Collections.singleton(
parentArtifact ),
- createDummyArtifact(),
createLocalArtifactRepository(),
- remoteRepositories,
metadataSource, null );
- }
- catch ( ArtifactResolutionException e )
- {
- // MANTTASKS-87: don't fail if parent pom is not resolved
immediately
- log( "Error downloading parent pom " + parent.getId() + ": " +
e.getMessage(), Project.MSG_WARN );
- }
- catch ( ArtifactNotFoundException e )
- {
- throw new BuildException( "Unable to download parent pom " +
parent.getId() + " in remote repository: " + e.getMessage(), e );
- }
}
}