Author: jdcasey Date: Tue Jun 21 16:25:26 2005 New Revision: 191744 URL: http://svn.apache.org/viewcvs?rev=191744&view=rev Log: 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! Modified: maven/components/trunk/maven-artifact-ant/sample.build.xml maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml Modified: maven/components/trunk/maven-artifact-ant/sample.build.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/sample.build.xml?rev=191744&r1=191743&r2=191744&view=diff ============================================================================== --- maven/components/trunk/maven-artifact-ant/sample.build.xml (original) +++ maven/components/trunk/maven-artifact-ant/sample.build.xml Tue Jun 21 16:25:26 2005 @@ -1,13 +1,46 @@ -<project name="foo" xmlns:artifact="antlib:org.apache.maven.artifact.ant" default="foo"> - <target name="test-pom"> +<project name="foo" default="foo" xmlns:artifact="urn:maven-artifact-ant"> + <!-- + 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 + + OR + + 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 name="test-pom" depends="initTaskDefs"> <artifact:pom file="pom.xml" id="my.maven.project"/> - <echo>Artifact ID = ${my.maven.project:artifactId}</echo> + <echo>Artifact ID = ${my.maven.project.artifactId}</echo> - <echo>Parent Artifact ID = ${my.maven.project:parent.artifactId}</echo> + <echo>Parent Artifact ID = ${my.maven.project.parent.artifactId}</echo> </target> - <target name="foo"> + <target name="foo" depends="initTaskDefs"> <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"/> @@ -51,7 +84,7 @@ </artifact:deploy> </target> - <target name="test-scm"> + <target name="test-scm" depends="initTaskDefs"> <mkdir dir="target" /> <pathconvert targetos="unix" property="repo.path.unix"> Modified: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java?rev=191744&r1=191743&r2=191744&view=diff ============================================================================== --- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java (original) +++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java Tue Jun 21 16:25:26 2005 @@ -27,11 +27,16 @@ import org.apache.maven.settings.Server; import org.apache.maven.settings.Settings; 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.project.MavenProject; import org.apache.maven.project.MavenProjectBuilder; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; 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.component.repository.exception.ComponentLifecycleException; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; @@ -251,14 +256,24 @@ if ( embedder == null ) { embedder = new Embedder(); + try { - embedder.start(); + ClassWorld classWorld = new ClassWorld(); + + ClassRealm classRealm = classWorld.newRealm( "plexus.core", getClass().getClassLoader() ); + + embedder.start( classWorld ); } catch ( PlexusContainerException 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 ); } } @@ -286,6 +301,24 @@ { pom.initialise( projectBuilder, localArtifactRepository ); } + 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; } Modified: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java?rev=191744&r1=191743&r2=191744&view=diff ============================================================================== --- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java (original) +++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java Tue Jun 21 16:25:26 2005 @@ -81,6 +81,12 @@ 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 ); Modified: maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java?rev=191744&r1=191743&r2=191744&view=diff ============================================================================== --- maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java (original) +++ maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/Pom.java Tue Jun 21 16:25:26 2005 @@ -91,6 +91,11 @@ } return instance; } + + public void setMavenProject( MavenProject mavenProject ) + { + getInstance().mavenProject = mavenProject; + } public File getFile() { Modified: maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml?rev=191744&r1=191743&r2=191744&view=diff ============================================================================== --- maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml (original) +++ maven/components/trunk/maven-artifact-ant/src/main/resources/META-INF/plexus/components.xml Tue Jun 21 16:25:26 2005 @@ -229,7 +229,7 @@ <role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role> </requirement> <requirement> - <role>org.apache.maven.profiless.activation.ProfileActivationCalculator</role> + <role>org.apache.maven.profiles.activation.ProfileActivationCalculator</role> </requirement> </requirements> </component> @@ -239,8 +239,8 @@ | --> <component> - <role>org.apache.maven.profiless.activation.ProfileActivationCalculator</role> - <implementation>org.apache.maven.profiless.activation.ProfileActivationCalculator</implementation> + <role>org.apache.maven.profiles.activation.ProfileActivationCalculator</role> + <implementation>org.apache.maven.profiles.activation.ProfileActivationCalculator</implementation> </component> <!-- | @@ -248,9 +248,9 @@ | --> <component> - <role>org.apache.maven.profiless.activation.ProfileActivator</role> + <role>org.apache.maven.profiles.activation.ProfileActivator</role> <role-hint>always-on</role-hint> - <implementation>org.apache.maven.profiless.activation.AlwaysOnProfileActivator</implementation> + <implementation>org.apache.maven.profiles.activation.AlwaysOnProfileActivator</implementation> </component> <!-- | @@ -258,9 +258,9 @@ | --> <component> - <role>org.apache.maven.profiless.activation.ProfileActivator</role> + <role>org.apache.maven.profiles.activation.ProfileActivator</role> <role-hint>jdk-prefix</role-hint> - <implementation>org.apache.maven.profiless.activation.JdkPrefixProfileActivator</implementation> + <implementation>org.apache.maven.profiles.activation.JdkPrefixProfileActivator</implementation> </component> <!-- | @@ -268,9 +268,9 @@ | --> <component> - <role>org.apache.maven.profiless.activation.ProfileActivator</role> + <role>org.apache.maven.profiles.activation.ProfileActivator</role> <role-hint>system-property</role-hint> - <implementation>org.apache.maven.profiless.activation.SystemPropertyProfileActivator</implementation> + <implementation>org.apache.maven.profiles.activation.SystemPropertyProfileActivator</implementation> </component> <!-- | @@ -278,9 +278,9 @@ | --> <component> - <role>org.apache.maven.profiless.activation.ProfileActivator</role> + <role>org.apache.maven.profiles.activation.ProfileActivator</role> <role-hint>explicit-listing</role-hint> - <implementation>org.apache.maven.profiless.activation.ExplicitListingProfileActivator</implementation> + <implementation>org.apache.maven.profiles.activation.ExplicitListingProfileActivator</implementation> </component> <!-- | --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]