mirror of https://github.com/apache/maven.git
Resolving issue: MNG-467 (patch from Kenney Westerhof applied, with minor formatting modifications)
Resolving issue: MNG-503 (another patch from Kenney Westerhof applied) o Tracked down the potential NPE when using a list of dependencies in the DependencyTask (it needs a Pom in order to create an originating artifact)...creating a dummy Pom instance when the list of dependencies is supplied, since I assume the originatingArtifact is used for tracking/graphing purposes. This new method, called createDummyPom() is in AbstractArtifactTask, so it's available for use in InstallTask and DeployTask if necessary... Thanks, Kenney! git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@191744 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fd3e9fe9e2
commit
748de75a58
|
@ -1,13 +1,46 @@
|
||||||
<project name="foo" xmlns:artifact="antlib:org.apache.maven.artifact.ant" default="foo">
|
<project name="foo" default="foo" xmlns:artifact="urn:maven-artifact-ant">
|
||||||
<target name="test-pom">
|
<!--
|
||||||
<artifact:pom file="pom.xml" id="my.maven.project"/>
|
You either need to run the the 'initTaskDefs' task below and
|
||||||
|
define the artifact namespace like above (choose anything you
|
||||||
|
like except strings that start with 'antlib:'),
|
||||||
|
and be sure to supply the path to the maven-artifact-ant jars
|
||||||
|
|
||||||
<echo>Artifact ID = ${my.maven.project:artifactId}</echo>
|
OR
|
||||||
|
|
||||||
<echo>Parent Artifact ID = ${my.maven.project:parent.artifactId}</echo>
|
just define the artifact namespace as follows:
|
||||||
|
|
||||||
|
xmlns:artifact="antlib:org.apache.maven.artifact.ant"
|
||||||
|
|
||||||
|
and be sure to add the maven-artifact-ant jars to the ant
|
||||||
|
classpath (either by setting the CLASSPATH environment variable
|
||||||
|
before calling ant, or place the jars in the $ANT_HOME/lib directory).
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<target name="initTaskDefs">
|
||||||
|
<!-- don't forget to set the value! -->
|
||||||
|
<property name="maven.artifact-ant.lib.dir" value="${user.home}/work/opensource/m2/maven-artifact-ant/target/"/>
|
||||||
|
<path id="maven.classpath">
|
||||||
|
<pathelement location="${maven.artifact-ant.lib.dir}/maven-artifact-ant-2.0-SNAPSHOT-dep.jar"/>
|
||||||
|
<pathelement location="${maven.artifact-ant.lib.dir}maven-artifact-ant-2.0-SNAPSHOT.jar"/>
|
||||||
|
</path>
|
||||||
|
|
||||||
|
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
|
||||||
|
uri="urn:maven-artifact-ant"
|
||||||
|
>
|
||||||
|
<classpath refid="maven.classpath"/>
|
||||||
|
</typedef>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="foo">
|
<target name="test-pom" depends="initTaskDefs">
|
||||||
|
<artifact:pom file="pom.xml" id="my.maven.project"/>
|
||||||
|
|
||||||
|
<echo>Artifact ID = ${my.maven.project.artifactId}</echo>
|
||||||
|
|
||||||
|
<echo>Parent Artifact ID = ${my.maven.project.parent.artifactId}</echo>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="foo" depends="initTaskDefs">
|
||||||
<artifact:localRepository id="local.repository" location="${basedir}/target/local-repo" layout="default"/>
|
<artifact:localRepository id="local.repository" location="${basedir}/target/local-repo" layout="default"/>
|
||||||
|
|
||||||
<artifact:remoteRepository id="deploy.repository" url="file://${basedir}/target/deployment-repo" layout="legacy"/>
|
<artifact:remoteRepository id="deploy.repository" url="file://${basedir}/target/deployment-repo" layout="legacy"/>
|
||||||
|
@ -51,7 +84,7 @@
|
||||||
</artifact:deploy>
|
</artifact:deploy>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="test-scm">
|
<target name="test-scm" depends="initTaskDefs">
|
||||||
<mkdir dir="target" />
|
<mkdir dir="target" />
|
||||||
|
|
||||||
<pathconvert targetos="unix" property="repo.path.unix">
|
<pathconvert targetos="unix" property="repo.path.unix">
|
||||||
|
|
|
@ -27,11 +27,16 @@ import org.apache.maven.settings.Mirror;
|
||||||
import org.apache.maven.settings.Server;
|
import org.apache.maven.settings.Server;
|
||||||
import org.apache.maven.settings.Settings;
|
import org.apache.maven.settings.Settings;
|
||||||
import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
|
import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
import org.apache.maven.profiles.activation.ProfileActivationUtils;
|
import org.apache.maven.profiles.activation.ProfileActivationUtils;
|
||||||
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.project.MavenProjectBuilder;
|
import org.apache.maven.project.MavenProjectBuilder;
|
||||||
import org.apache.tools.ant.BuildException;
|
import org.apache.tools.ant.BuildException;
|
||||||
import org.apache.tools.ant.Project;
|
import org.apache.tools.ant.Project;
|
||||||
import org.apache.tools.ant.Task;
|
import org.apache.tools.ant.Task;
|
||||||
|
import org.codehaus.classworlds.ClassRealm;
|
||||||
|
import org.codehaus.classworlds.ClassWorld;
|
||||||
|
import org.codehaus.classworlds.DuplicateRealmException;
|
||||||
import org.codehaus.plexus.PlexusContainerException;
|
import org.codehaus.plexus.PlexusContainerException;
|
||||||
import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
|
import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
|
||||||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||||
|
@ -251,14 +256,24 @@ public abstract class AbstractArtifactTask
|
||||||
if ( embedder == null )
|
if ( embedder == null )
|
||||||
{
|
{
|
||||||
embedder = new Embedder();
|
embedder = new Embedder();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
embedder.start();
|
ClassWorld classWorld = new ClassWorld();
|
||||||
|
|
||||||
|
ClassRealm classRealm = classWorld.newRealm( "plexus.core", getClass().getClassLoader() );
|
||||||
|
|
||||||
|
embedder.start( classWorld );
|
||||||
}
|
}
|
||||||
catch ( PlexusContainerException e )
|
catch ( PlexusContainerException e )
|
||||||
{
|
{
|
||||||
throw new BuildException( "Unable to start embedder", e );
|
throw new BuildException( "Unable to start embedder", e );
|
||||||
}
|
}
|
||||||
|
catch ( DuplicateRealmException e )
|
||||||
|
{
|
||||||
|
throw new BuildException( "Unable to create embedder ClassRealm", e );
|
||||||
|
}
|
||||||
|
|
||||||
getProject().addReference( Embedder.class.getName(), embedder );
|
getProject().addReference( Embedder.class.getName(), embedder );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -289,6 +304,24 @@ public abstract class AbstractArtifactTask
|
||||||
return pom;
|
return pom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Pom createDummyPom()
|
||||||
|
{
|
||||||
|
Model mavenModel = new Model();
|
||||||
|
|
||||||
|
mavenModel.setGroupId( "unspecified" );
|
||||||
|
mavenModel.setArtifactId( "unspecified" );
|
||||||
|
mavenModel.setVersion( "0.0" );
|
||||||
|
mavenModel.setPackaging( "jar" );
|
||||||
|
|
||||||
|
MavenProject mavenProject = new MavenProject( mavenModel );
|
||||||
|
|
||||||
|
Pom pom = new Pom();
|
||||||
|
|
||||||
|
pom.setMavenProject( mavenProject );
|
||||||
|
|
||||||
|
return pom;
|
||||||
|
}
|
||||||
|
|
||||||
public void addPom( Pom pom )
|
public void addPom( Pom pom )
|
||||||
{
|
{
|
||||||
this.pom = pom;
|
this.pom = pom;
|
||||||
|
|
|
@ -81,6 +81,12 @@ public class DependenciesTask
|
||||||
remoteRepositories.add( createAntRemoteRepository( pomRepository ) );
|
remoteRepositories.add( 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();
|
||||||
|
}
|
||||||
|
|
||||||
Set artifacts = metadataSource.createArtifacts( dependencies, null, null );
|
Set artifacts = metadataSource.createArtifacts( dependencies, null, null );
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,11 @@ public class Pom
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMavenProject( MavenProject mavenProject )
|
||||||
|
{
|
||||||
|
getInstance().mavenProject = mavenProject;
|
||||||
|
}
|
||||||
|
|
||||||
public File getFile()
|
public File getFile()
|
||||||
{
|
{
|
||||||
return getInstance().file;
|
return getInstance().file;
|
||||||
|
|
|
@ -229,7 +229,7 @@
|
||||||
<role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role>
|
<role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role>
|
||||||
</requirement>
|
</requirement>
|
||||||
<requirement>
|
<requirement>
|
||||||
<role>org.apache.maven.profiless.activation.ProfileActivationCalculator</role>
|
<role>org.apache.maven.profiles.activation.ProfileActivationCalculator</role>
|
||||||
</requirement>
|
</requirement>
|
||||||
</requirements>
|
</requirements>
|
||||||
</component>
|
</component>
|
||||||
|
@ -239,8 +239,8 @@
|
||||||
|
|
|
|
||||||
-->
|
-->
|
||||||
<component>
|
<component>
|
||||||
<role>org.apache.maven.profiless.activation.ProfileActivationCalculator</role>
|
<role>org.apache.maven.profiles.activation.ProfileActivationCalculator</role>
|
||||||
<implementation>org.apache.maven.profiless.activation.ProfileActivationCalculator</implementation>
|
<implementation>org.apache.maven.profiles.activation.ProfileActivationCalculator</implementation>
|
||||||
</component>
|
</component>
|
||||||
<!--
|
<!--
|
||||||
|
|
|
|
||||||
|
@ -248,9 +248,9 @@
|
||||||
|
|
|
|
||||||
-->
|
-->
|
||||||
<component>
|
<component>
|
||||||
<role>org.apache.maven.profiless.activation.ProfileActivator</role>
|
<role>org.apache.maven.profiles.activation.ProfileActivator</role>
|
||||||
<role-hint>always-on</role-hint>
|
<role-hint>always-on</role-hint>
|
||||||
<implementation>org.apache.maven.profiless.activation.AlwaysOnProfileActivator</implementation>
|
<implementation>org.apache.maven.profiles.activation.AlwaysOnProfileActivator</implementation>
|
||||||
</component>
|
</component>
|
||||||
<!--
|
<!--
|
||||||
|
|
|
|
||||||
|
@ -258,9 +258,9 @@
|
||||||
|
|
|
|
||||||
-->
|
-->
|
||||||
<component>
|
<component>
|
||||||
<role>org.apache.maven.profiless.activation.ProfileActivator</role>
|
<role>org.apache.maven.profiles.activation.ProfileActivator</role>
|
||||||
<role-hint>jdk-prefix</role-hint>
|
<role-hint>jdk-prefix</role-hint>
|
||||||
<implementation>org.apache.maven.profiless.activation.JdkPrefixProfileActivator</implementation>
|
<implementation>org.apache.maven.profiles.activation.JdkPrefixProfileActivator</implementation>
|
||||||
</component>
|
</component>
|
||||||
<!--
|
<!--
|
||||||
|
|
|
|
||||||
|
@ -268,9 +268,9 @@
|
||||||
|
|
|
|
||||||
-->
|
-->
|
||||||
<component>
|
<component>
|
||||||
<role>org.apache.maven.profiless.activation.ProfileActivator</role>
|
<role>org.apache.maven.profiles.activation.ProfileActivator</role>
|
||||||
<role-hint>system-property</role-hint>
|
<role-hint>system-property</role-hint>
|
||||||
<implementation>org.apache.maven.profiless.activation.SystemPropertyProfileActivator</implementation>
|
<implementation>org.apache.maven.profiles.activation.SystemPropertyProfileActivator</implementation>
|
||||||
</component>
|
</component>
|
||||||
<!--
|
<!--
|
||||||
|
|
|
|
||||||
|
@ -278,9 +278,9 @@
|
||||||
|
|
|
|
||||||
-->
|
-->
|
||||||
<component>
|
<component>
|
||||||
<role>org.apache.maven.profiless.activation.ProfileActivator</role>
|
<role>org.apache.maven.profiles.activation.ProfileActivator</role>
|
||||||
<role-hint>explicit-listing</role-hint>
|
<role-hint>explicit-listing</role-hint>
|
||||||
<implementation>org.apache.maven.profiless.activation.ExplicitListingProfileActivator</implementation>
|
<implementation>org.apache.maven.profiles.activation.ExplicitListingProfileActivator</implementation>
|
||||||
</component>
|
</component>
|
||||||
<!--
|
<!--
|
||||||
|
|
|
|
||||||
|
|
Loading…
Reference in New Issue