mirror of https://github.com/apache/maven.git
reapplying John's merge of all 2.0.10-RC changes to date by reverting r679244, sans artifact upgrade and user agent parts. Passes all integration tests locally, seeing if Hudson and Continuum agree
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@679263 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
24176a08a1
commit
d52ffdef81
|
@ -28,6 +28,7 @@ import org.apache.maven.artifact.resolver.ArtifactResolutionException;
|
|||
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 @@ public class DefaultLifecycleExecutor
|
|||
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 @@ public class DefaultLifecycleExecutor
|
|||
{
|
||||
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
|
||||
}
|
||||
|
||||
public List getLifecycles()
|
||||
{
|
||||
return lifecycleBindingManager.getLifecycles();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ package org.apache.maven.lifecycle;
|
|||
* 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 @@ public interface LifecycleExecutor
|
|||
void execute( MavenSession session, ReactorManager rm, EventDispatcher dispatcher )
|
||||
throws LifecycleExecutionException, BuildFailureException;
|
||||
|
||||
/**
|
||||
* @since 2.0.10
|
||||
*/
|
||||
List getLifecycles();
|
||||
|
||||
}
|
||||
|
|
|
@ -64,13 +64,18 @@ public class DefaultLifecycleBindingManager
|
|||
private Logger logger;
|
||||
|
||||
// configured. Moved out of DefaultLifecycleExecutor...
|
||||
private List lifecycles;
|
||||
private List<org.apache.maven.lifecycle.binding.Lifecycle> 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<org.apache.maven.lifecycle.binding.Lifecycle> getLifecycles()
|
||||
{
|
||||
return lifecycles;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
|
|
@ -82,4 +82,6 @@ public interface LifecycleBindingManager
|
|||
final LifecycleBindings lifecycleBindings )
|
||||
throws LifecycleSpecificationException;
|
||||
|
||||
List<org.apache.maven.lifecycle.binding.Lifecycle> getLifecycles();
|
||||
|
||||
}
|
||||
|
|
|
@ -1087,6 +1087,8 @@ public class DefaultMavenProjectBuilder
|
|||
dPlugin.setGroupId( iPlugin.getGroupId() );
|
||||
dPlugin.setArtifactId( iPlugin.getArtifactId() );
|
||||
dPlugin.setVersion( iPlugin.getVersion() );
|
||||
|
||||
dPlugin.setDependencies( iPlugin.getDependencies() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1108,6 +1110,8 @@ public class DefaultMavenProjectBuilder
|
|||
dPlugin.setGroupId( iPlugin.getGroupId() );
|
||||
dPlugin.setArtifactId( iPlugin.getArtifactId() );
|
||||
dPlugin.setVersion( iPlugin.getVersion() );
|
||||
|
||||
dPlugin.setDependencies( iPlugin.getDependencies() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -562,6 +562,8 @@ public final class ModelUtils
|
|||
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() );
|
||||
|
|
|
@ -101,22 +101,34 @@ public class MavenMetadataSource
|
|||
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 <version> 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() );
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
package org.apache.maven.project.interpolation;
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
|
@ -17,33 +19,34 @@
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
package org.apache.maven.project.interpolation;
|
||||
|
||||
import org.apache.maven.project.path.PathTranslator;
|
||||
import org.codehaus.plexus.interpolation.AbstractFunctionValueSourceWrapper;
|
||||
import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
|
||||
import org.codehaus.plexus.interpolation.ValueSource;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class PathTranslatingValueSource
|
||||
extends AbstractFunctionValueSourceWrapper
|
||||
/**
|
||||
*
|
||||
* @version $Id: PathTranslatingPostProcessor.java 677447 2008-07-16 22:15:57Z jdcasey $
|
||||
*/
|
||||
public class PathTranslatingPostProcessor
|
||||
implements InterpolationPostProcessor
|
||||
{
|
||||
|
||||
private final List<String> unprefixedPathKeys;
|
||||
private final List unprefixedPathKeys;
|
||||
private final File projectDir;
|
||||
private final PathTranslator pathTranslator;
|
||||
|
||||
protected PathTranslatingValueSource( ValueSource valueSource, List<String> unprefixedPathKeys, File projectDir, PathTranslator pathTranslator )
|
||||
public PathTranslatingPostProcessor( List unprefixedPathKeys, File projectDir, PathTranslator pathTranslator )
|
||||
{
|
||||
super( valueSource );
|
||||
this.unprefixedPathKeys = unprefixedPathKeys;
|
||||
this.projectDir = projectDir;
|
||||
this.pathTranslator = pathTranslator;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object executeFunction( String expression,
|
||||
public Object execute( String expression,
|
||||
Object value )
|
||||
{
|
||||
if ( projectDir != null && value != null && unprefixedPathKeys.contains( expression ) )
|
|
@ -88,6 +88,12 @@ public class RegexBasedModelInterpolator
|
|||
throws IOException
|
||||
{
|
||||
}
|
||||
|
||||
// for testing.
|
||||
protected RegexBasedModelInterpolator( PathTranslator pathTranslator )
|
||||
{
|
||||
this.pathTranslator = pathTranslator;
|
||||
}
|
||||
|
||||
public Model interpolate( Model model, Map<String, ?> context )
|
||||
throws ModelInterpolationException
|
||||
|
@ -199,15 +205,8 @@ public class RegexBasedModelInterpolator
|
|||
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 @@ public class RegexBasedModelInterpolator
|
|||
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 );
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ under the License.
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-plugin-plugin</artifactId>
|
||||
<version>2.3</version>
|
||||
<version>2.4.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-rar-plugin</artifactId>
|
||||
|
@ -131,7 +131,7 @@ under the License.
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-site-plugin</artifactId>
|
||||
<version>2.0-beta-6</version>
|
||||
<version>2.0-beta-7</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
|
@ -139,7 +139,7 @@ under the License.
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.4.2</version>
|
||||
<version>2.4.3</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
|
|
|
@ -19,19 +19,25 @@ package org.apache.maven.project.interpolation;
|
|||
* 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 @@ public class RegexBasedModelInterpolatorTest
|
|||
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 );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>testing</groupId>
|
||||
<artifactId>plugin-level-dep</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>3.8.1</version>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>${pom.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
25
pom.xml
25
pom.xml
|
@ -202,6 +202,27 @@
|
|||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>clirr-maven-plugin</artifactId>
|
||||
<version>2.2.1</version>
|
||||
<configuration>
|
||||
<!-- needed for release: default value "(,${project.version})" for 2.0.10 is 2.0.10-SNAPSHOT -->
|
||||
<comparisonVersion>2.0.9</comparisonVersion>
|
||||
<excludes>
|
||||
<!-- TODO: These represent method ADDITIONS from 2.0.9, and should be removed after
|
||||
2.0.10 is released. -->
|
||||
<exclude>org/apache/maven/lifecycle/LifecycleExecutor*</exclude>
|
||||
<exclude>org/apache/maven/artifact/metadata/ArtifactMetadataSource*</exclude>
|
||||
<exclude>org/apache/maven/project/MavenProjectBuilder*</exclude>
|
||||
<exclude>org/apache/maven/project/ProjectBuilderConfiguration*</exclude>
|
||||
<exclude>org/apache/maven/project/interpolation/ModelInterpolator*</exclude>
|
||||
<exclude>org/apache/maven/project/inheritance/ModelInheritanceAssembler*</exclude>
|
||||
<exclude>org/apache/maven/execution/MavenExecutionRequest*</exclude>
|
||||
<exclude>org/apache/maven/plugin/DefaultPluginManager*</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
|
@ -247,8 +268,8 @@
|
|||
<junitVersion>3.8.1</junitVersion>
|
||||
<plexusVersion>1.0-alpha-48</plexusVersion>
|
||||
<plexusInteractivityVersion>1.0-alpha-6</plexusInteractivityVersion>
|
||||
<plexusInterpolationVersion>1.0</plexusInterpolationVersion>
|
||||
<plexusUtilsVersion>1.5.4</plexusUtilsVersion>
|
||||
<plexusInterpolationVersion>1.1</plexusInterpolationVersion>
|
||||
<plexusUtilsVersion>1.5.5</plexusUtilsVersion>
|
||||
<wagonVersion>1.0-beta-3</wagonVersion>
|
||||
</properties>
|
||||
|
||||
|
|
Loading…
Reference in New Issue