Return-Path: Delivered-To: apmail-maven-commits-archive@www.apache.org Received: (qmail 9195 invoked from network); 23 Jul 2008 23:26:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 Jul 2008 23:26:23 -0000 Received: (qmail 70457 invoked by uid 500); 23 Jul 2008 23:26:22 -0000 Delivered-To: apmail-maven-commits-archive@maven.apache.org Received: (qmail 70414 invoked by uid 500); 23 Jul 2008 23:26:22 -0000 Mailing-List: contact commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@maven.apache.org Delivered-To: mailing list commits@maven.apache.org Received: (qmail 70405 invoked by uid 99); 23 Jul 2008 23:26:22 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Jul 2008 16:26:22 -0700 X-ASF-Spam-Status: No, hits=-1999.3 required=10.0 tests=ALL_TRUSTED,FRT_LEVITRA X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Jul 2008 23:25:36 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id CA7492388989; Wed, 23 Jul 2008 16:26:01 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r679229 - in /maven/components/trunk: ./ maven-core/src/main/java/org/apache/maven/lifecycle/ maven-core/src/main/java/org/apache/maven/lifecycle/binding/ maven-core/src/main/resources/META-INF/plexus/ maven-project/src/main/java/org/apache... Date: Wed, 23 Jul 2008 23:26:01 -0000 To: commits@maven.apache.org From: jdcasey@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080723232601.CA7492388989@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jdcasey Date: Wed Jul 23 16:26:00 2008 New Revision: 679229 URL: http://svn.apache.org/viewvc?rev=679229&view=rev Log: Merging changes in from 2.0.10-RC2 release candidate on 2.0.10-RC branch. Still have two failing unit tests in maven-core; I'll take care of those in a few minutes. Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingPostProcessor.java - copied unchanged from r679206, maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingPostProcessor.java maven/components/trunk/maven-project/src/test/resources/project-dynamism/plugin-level-dep.pom.xml - copied unchanged from r679206, maven/components/branches/maven-2.0.x/maven-project/src/test/resources/project-dynamism/plugin-level-dep.pom.xml Removed: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/PathTranslatingValueSource.java Modified: maven/components/trunk/ (props changed) maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java maven/components/trunk/pom.xml Propchange: maven/components/trunk/ ------------------------------------------------------------------------------ svn:mergeinfo = /maven/components/branches/maven-2.0.x:679206 Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Wed Jul 23 16:26:00 2008 @@ -28,6 +28,7 @@ import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.execution.ReactorManager; +import org.apache.maven.lifecycle.binding.LifecycleBindingManager; import org.apache.maven.lifecycle.binding.MojoBindingFactory; import org.apache.maven.lifecycle.model.MojoBinding; import org.apache.maven.lifecycle.plan.BuildPlan; @@ -91,6 +92,8 @@ private BuildPlanner buildPlanner; private MojoBindingFactory mojoBindingFactory; + + private LifecycleBindingManager lifecycleBindingManager; // this is needed for setting the lookup realm before we start building a project. private PlexusContainer container; @@ -959,4 +962,9 @@ { container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); } + + public List getLifecycles() + { + return lifecycleBindingManager.getLifecycles(); + } } Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Wed Jul 23 16:26:00 2008 @@ -19,6 +19,8 @@ * under the License. */ +import java.util.List; + import org.apache.maven.BuildFailureException; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenSession; @@ -56,4 +58,9 @@ void execute( MavenSession session, ReactorManager rm, EventDispatcher dispatcher ) throws LifecycleExecutionException, BuildFailureException; + /** + * @since 2.0.10 + */ + List getLifecycles(); + } Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/DefaultLifecycleBindingManager.java Wed Jul 23 16:26:00 2008 @@ -64,13 +64,18 @@ private Logger logger; // configured. Moved out of DefaultLifecycleExecutor... - private List lifecycles; + private List lifecycles; // configured. Moved out of DefaultLifecycleExecutor... private List defaultReports; // contextualized, used for setting lookup realm before retrieving lifecycle bindings for packaging. private PlexusContainer container; + + public List getLifecycles() + { + return lifecycles; + } /** * {@inheritDoc} Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/binding/LifecycleBindingManager.java Wed Jul 23 16:26:00 2008 @@ -82,4 +82,6 @@ final LifecycleBindings lifecycleBindings ) throws LifecycleSpecificationException; + List getLifecycles(); + } Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml (original) +++ maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Wed Jul 23 16:26:00 2008 @@ -426,6 +426,9 @@ org.apache.maven.lifecycle.binding.MojoBindingFactory + + org.apache.maven.lifecycle.binding.LifecycleBindingManager + @@ -817,6 +820,15 @@ + + + org.apache.maven.artifact.manager.WagonManager + default + org.apache.maven.artifact.manager.DefaultWagonManager + + Apache-Maven/2.1 (Java @java.version@; @os.name@ @os.version@) maven-artifact/${project.version} + + org.apache.maven.lifecycle.plan.BuildPlanner Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Jul 23 16:26:00 2008 @@ -1087,6 +1087,8 @@ dPlugin.setGroupId( iPlugin.getGroupId() ); dPlugin.setArtifactId( iPlugin.getArtifactId() ); dPlugin.setVersion( iPlugin.getVersion() ); + + dPlugin.setDependencies( iPlugin.getDependencies() ); } } @@ -1108,6 +1110,8 @@ dPlugin.setGroupId( iPlugin.getGroupId() ); dPlugin.setArtifactId( iPlugin.getArtifactId() ); dPlugin.setVersion( iPlugin.getVersion() ); + + dPlugin.setDependencies( iPlugin.getDependencies() ); } } } Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java Wed Jul 23 16:26:00 2008 @@ -562,6 +562,8 @@ public static Model cloneModel( Model model ) { // TODO: would be nice for the modello:java code to generate this as a copy constructor + // FIXME: Fix deep cloning issues with existing plugin instances (setting + // a version when resolved will pollute the original model instance) Model newModel = new Model(); ModelInheritanceAssembler assembler = new DefaultModelInheritanceAssembler(); newModel.setModelVersion( model.getModelVersion() ); Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Wed Jul 23 16:26:00 2008 @@ -101,22 +101,34 @@ return artifact; } - ProjectRelocation res = retrieveRelocatedProject( artifact, localRepository, remoteRepositories ); - MavenProject project = res.project; - + ProjectRelocation rel = retrieveRelocatedProject( artifact, localRepository, remoteRepositories ); + + if ( rel == null ) + { + return artifact; + } + + MavenProject project = rel.project; if ( project == null || getRelocationKey( artifact ).equals( getRelocationKey( project.getArtifact() ) ) ) { return artifact; } + + // NOTE: Using artifact information here, since some POMs are deployed + // to central with one version in the filename, but another in the string! + // Case in point: org.apache.ws.commons:XmlSchema:1.1:pom. + // + // Since relocation triggers a reconfiguration of the artifact's information + // in retrieveRelocatedProject(..), this is safe to do. Artifact result = null; if ( artifact.getClassifier() != null ) { - result = artifactFactory.createArtifactWithClassifier( project.getGroupId(), project.getArtifactId(), project.getVersion(), artifact.getType(), artifact.getClassifier() ); + result = artifactFactory.createArtifactWithClassifier( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier() ); } else { - result = artifactFactory.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), artifact.getScope(), artifact.getType() ); + result = artifactFactory.createArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getScope(), artifact.getType() ); } result.setScope( artifact.getScope() ); Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolator.java Wed Jul 23 16:26:00 2008 @@ -88,6 +88,12 @@ throws IOException { } + + // for testing. + protected RegexBasedModelInterpolator( PathTranslator pathTranslator ) + { + this.pathTranslator = pathTranslator; + } public Model interpolate( Model model, Map context ) throws ModelInterpolationException @@ -199,15 +205,8 @@ timestampFormat = modelProperties.getProperty( BUILD_TIMESTAMP_FORMAT_PROPERTY, timestampFormat ); } - ValueSource baseModelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false ); - ValueSource modelValueSource1 = new PathTranslatingValueSource( baseModelValueSource1, - TRANSLATED_PATH_EXPRESSIONS, - projectDir, pathTranslator ); - - ValueSource baseModelValueSource2 = new ObjectBasedValueSource( model ); - ValueSource modelValueSource2 = new PathTranslatingValueSource( baseModelValueSource2, - TRANSLATED_PATH_EXPRESSIONS, - projectDir, pathTranslator ); + ValueSource modelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false ); + ValueSource modelValueSource2 = new ObjectBasedValueSource( model ); ValueSource basedirValueSource = new PrefixedValueSourceWrapper( new ValueSource(){ public Object getValue( String expression ) @@ -232,6 +231,11 @@ interpolator.addValueSource( new PrefixedValueSourceWrapper( new MapBasedValueSource( modelProperties ), PROJECT_PREFIXES, true ) ); interpolator.addValueSource( modelValueSource2 ); interpolator.addValueSource( new MapBasedValueSource( config.getUserProperties() ) ); + + PathTranslatingPostProcessor pathTranslatingPostProcessor = + new PathTranslatingPostProcessor( TRANSLATED_PATH_EXPRESSIONS, projectDir, pathTranslator ); + + interpolator.addPostProcessor( pathTranslatingPostProcessor ); RecursionInterceptor recursionInterceptor = new PrefixAwareRecursionInterceptor( PROJECT_PREFIXES ); Modified: maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml (original) +++ maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml Wed Jul 23 16:26:00 2008 @@ -115,7 +115,7 @@ maven-plugin-plugin - 2.3 + 2.4.2 maven-rar-plugin @@ -131,7 +131,7 @@ maven-site-plugin - 2.0-beta-6 + 2.0-beta-7 maven-source-plugin @@ -139,7 +139,7 @@ maven-surefire-plugin - 2.4.2 + 2.4.3 maven-war-plugin Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java (original) +++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/interpolation/RegexBasedModelInterpolatorTest.java Wed Jul 23 16:26:00 2008 @@ -19,19 +19,25 @@ * under the License. */ +import org.apache.maven.model.Build; import org.apache.maven.model.Dependency; import org.apache.maven.model.DeploymentRepository; import org.apache.maven.model.DistributionManagement; import org.apache.maven.model.Model; import org.apache.maven.model.Organization; import org.apache.maven.model.Repository; +import org.apache.maven.model.Resource; import org.apache.maven.model.Scm; import org.apache.maven.project.DefaultProjectBuilderConfiguration; import org.apache.maven.project.ProjectBuilderConfiguration; +import org.apache.maven.project.path.DefaultPathTranslator; +import org.apache.maven.project.path.PathTranslator; import java.io.File; import java.io.IOException; import java.util.Collections; +import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Properties; @@ -297,4 +303,83 @@ assertEquals( "Expected '" + expectedVersion + "' for version expression '" + depVersionExpr + "', but was '" + result + "'", expectedVersion, result ); } + public void testShouldInterpolateSourceDirectoryReferencedFromResourceDirectoryCorrectly() + throws Exception + { + Model model = new Model(); + + Build build = new Build(); + build.setSourceDirectory( "correct" ); + + Resource res = new Resource(); + res.setDirectory( "${project.build.sourceDirectory}" ); + + build.addResource( res ); + + Resource res2 = new Resource(); + res2.setDirectory( "${pom.build.sourceDirectory}" ); + + build.addResource( res2 ); + + Resource res3 = new Resource(); + res3.setDirectory( "${build.sourceDirectory}" ); + + build.addResource( res3 ); + + model.setBuild( build ); + + Model out = new RegexBasedModelInterpolator().interpolate( model, context ); + + List outResources = out.getBuild().getResources(); + Iterator resIt = outResources.iterator(); + + assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() ); + assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() ); + assertEquals( build.getSourceDirectory(), ( (Resource) resIt.next() ).getDirectory() ); + } + + public void testShouldInterpolateUnprefixedBasedirExpression() + throws ModelInterpolationException, IOException + { + File basedir = new File( "/test/path" ); + Model model = new Model(); + Dependency dep = new Dependency(); + dep.setSystemPath( "${basedir}/artifact.jar" ); + + model.addDependency( dep ); + + Model result = new RegexBasedModelInterpolator().interpolate( model, basedir, new DefaultProjectBuilderConfiguration(), true ); + + List rDeps = result.getDependencies(); + assertNotNull( rDeps ); + assertEquals( 1, rDeps.size() ); + assertEquals( new File( basedir, "artifact.jar" ).getAbsolutePath(), new File( ( (Dependency) rDeps.get( 0 ) ) + .getSystemPath() ).getAbsolutePath() ); + } + + public void testTwoLevelRecursiveBasedirAlignedExpression() + throws Exception + { + Model model = new Model(); + Build build = new Build(); + + model.setBuild( build ); + + build.setDirectory( "${project.basedir}/target" ); + build.setOutputDirectory( "${project.build.directory}/classes" ); + + PathTranslator translator = new DefaultPathTranslator(); + RegexBasedModelInterpolator interpolator = new RegexBasedModelInterpolator( translator ); + + File basedir = new File( System.getProperty( "java.io.tmpdir" ), "base" ); + + String value = interpolator.interpolate( "${project.build.outputDirectory}/foo", model, basedir, new DefaultProjectBuilderConfiguration(), true ); + value = value.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); + + String check = new File( basedir, "target/classes/foo" ).getAbsolutePath(); + check = check.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); + + assertEquals( check, value ); + } + } Modified: maven/components/trunk/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/pom.xml?rev=679229&r1=679228&r2=679229&view=diff ============================================================================== --- maven/components/trunk/pom.xml (original) +++ maven/components/trunk/pom.xml Wed Jul 23 16:26:00 2008 @@ -203,6 +203,27 @@ 1.0.0 + org.codehaus.mojo + clirr-maven-plugin + 2.2.1 + + + 2.0.9 + + + org/apache/maven/lifecycle/LifecycleExecutor* + org/apache/maven/artifact/metadata/ArtifactMetadataSource* + org/apache/maven/project/MavenProjectBuilder* + org/apache/maven/project/ProjectBuilderConfiguration* + org/apache/maven/project/interpolation/ModelInterpolator* + org/apache/maven/project/inheritance/ModelInheritanceAssembler* + org/apache/maven/execution/MavenExecutionRequest* + org/apache/maven/plugin/DefaultPluginManager* + + + + org.apache.maven.plugins maven-surefire-plugin 2.3 @@ -238,7 +259,7 @@ maven-toolchain - 3.0-SNAPSHOT + 3.0-alpha-2-SNAPSHOT 1.5.3 1.2-alpha-13 1.0 @@ -247,8 +268,8 @@ 3.8.1 1.0-alpha-48 1.0-alpha-6 - 1.0 - 1.5.4 + 1.1 + 1.5.5 1.0-beta-3