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 );
-            }
         }
     }
 


Reply via email to