Author: hboutemy
Date: Sun Dec 2 14:54:42 2007
New Revision: 600399
URL: http://svn.apache.org/viewvc?rev=600399&view=rev
Log:
[MANTTASKS-91] adding back code removed by error
Modified:
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/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=600399&r1=600398&r2=600399&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:54:42 2007
@@ -20,25 +20,39 @@
*/
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;
/**
@@ -148,6 +162,8 @@
// TODO: should this be in execute() too? Would that work when it is
used as a type?
if ( file != null )
{
+ checkParentPom();
+
try
{
mavenProject = builder.build( file, localRepository,
getProfileManager() );
@@ -160,6 +176,56 @@
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 );
+ }
}
}