You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2017/02/10 17:41:06 UTC
[1/9] maven git commit: [MNG-5961] Fix the SLF4J logger factory
implementation used for LOG4J2 [Forced Update!]
Repository: maven
Updated Branches:
refs/heads/DEPMGMT-IMPORT a8c7bbfcc -> 60df8d378 (forced update)
[MNG-5961] Fix the SLF4J logger factory implementation used for LOG4J2
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/23ceca36
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/23ceca36
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/23ceca36
Branch: refs/heads/DEPMGMT-IMPORT
Commit: 23ceca36e7c980cc8d8bdc16d64ede98189079aa
Parents: 1740265
Author: Arnaud Heritier <ah...@apache.org>
Authored: Tue Jan 31 10:26:28 2017 +0100
Committer: Arnaud HERITIER <ah...@apache.org>
Committed: Mon Feb 6 00:26:14 2017 +0100
----------------------------------------------------------------------
.../main/resources/META-INF/maven/slf4j-configuration.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/23ceca36/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties
----------------------------------------------------------------------
diff --git a/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties b/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties
index ae1bc39..ff865bc 100644
--- a/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties
+++ b/maven-embedder/src/main/resources/META-INF/maven/slf4j-configuration.properties
@@ -19,5 +19,5 @@
# value = corresponding o.a.m.cli.logging.Slf4jConfiguration class
org.slf4j.impl.SimpleLoggerFactory org.apache.maven.cli.logging.impl.Slf4jSimpleConfiguration
org.slf4j.impl.MavenSimpleLoggerFactory org.apache.maven.cli.logging.impl.Slf4jSimpleConfiguration
-org.slf4j.helpers.Log4jLoggerFactory org.apache.maven.cli.logging.impl.Log4j2Configuration
+org.apache.logging.slf4j.Log4jLoggerFactory org.apache.maven.cli.logging.impl.Log4j2Configuration
ch.qos.logback.classic.LoggerContext org.apache.maven.cli.logging.impl.LogbackConfiguration
[2/9] maven git commit: [MNG-6165] Deprecate and replace incorrectly
spelled public API
Posted by sc...@apache.org.
[MNG-6165] Deprecate and replace incorrectly spelled public API
Spelling fixes:
* spelling: collector
* spelling: executions
* spelling: repositories
* spelling: workspace
This closes #101
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/1be7ea89
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/1be7ea89
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/1be7ea89
Branch: refs/heads/DEPMGMT-IMPORT
Commit: 1be7ea893e3db1e47a4cf84c0592e0aaea24a6c3
Parents: 23ceca3
Author: Josh Soref <js...@apache.org>
Authored: Mon Jan 23 04:57:23 2017 +0000
Committer: Michael Osipov <mi...@apache.org>
Committed: Mon Feb 6 20:36:38 2017 +0100
----------------------------------------------------------------------
.../repository/MetadataResolutionRequest.java | 18 ++++++++++++++++++
.../repository/legacy/LegacyRepositorySystem.java | 2 +-
.../DelegatingLocalArtifactRepository.java | 9 +++++++++
.../LifecycleExecutionPlanCalculatorStub.java | 13 ++++++++++++-
.../AbstractModelInterpolatorTest.java | 18 ++++++++++++++----
5 files changed, 54 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/1be7ea89/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionRequest.java
----------------------------------------------------------------------
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionRequest.java b/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionRequest.java
index c98dd05..7593351 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionRequest.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/MetadataResolutionRequest.java
@@ -108,11 +108,24 @@ public class MetadataResolutionRequest
return this;
}
+ /**
+ * @deprecated instead use {@link #getRemoteRepositories()}
+ */
+ @Deprecated
public List<ArtifactRepository> getRemoteRepostories()
{
return remoteRepositories;
}
+ public List<ArtifactRepository> getRemoteRepositories()
+ {
+ return getRemoteRepostories();
+ }
+
+ /**
+ * @deprecated instead use {@link #setRemoteRepositories()}
+ */
+ @Deprecated
public MetadataResolutionRequest setRemoteRepostories( List<ArtifactRepository> remoteRepostories )
{
this.remoteRepositories = remoteRepostories;
@@ -120,6 +133,11 @@ public class MetadataResolutionRequest
return this;
}
+ public MetadataResolutionRequest setRemoteRepositories( List<ArtifactRepository> remoteRepositories )
+ {
+ return setRemoteRepostories( remoteRepositories );
+ }
+
public Map getManagedVersionMap()
{
return managedVersionMap;
http://git-wip-us.apache.org/repos/asf/maven/blob/1be7ea89/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
----------------------------------------------------------------------
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
index bd5988a..8d4d407 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
@@ -329,7 +329,7 @@ public class LegacyRepositorySystem
DelegatingLocalArtifactRepository delegatingLocalRepository =
(DelegatingLocalArtifactRepository) request.getLocalRepository();
- LocalArtifactRepository orig = delegatingLocalRepository.getIdeWorspace();
+ LocalArtifactRepository orig = delegatingLocalRepository.getIdeWorkspace();
delegatingLocalRepository.setIdeWorkspace( ideWorkspace );
http://git-wip-us.apache.org/repos/asf/maven/blob/1be7ea89/maven-core/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java b/maven-core/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java
index 90c1fa9..eb8f5ea 100644
--- a/maven-core/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java
+++ b/maven-core/src/main/java/org/apache/maven/repository/DelegatingLocalArtifactRepository.java
@@ -61,11 +61,20 @@ public class DelegatingLocalArtifactRepository
this.ideWorkspace = localRepository;
}
+ /**
+ * @deprecated instead use {@link #getIdeWorkspace()}
+ */
+ @Deprecated
public LocalArtifactRepository getIdeWorspace()
{
return ideWorkspace;
}
+ public LocalArtifactRepository getIdeWorkspace()
+ {
+ return getIdeWorspace();
+ }
+
@Override
public Artifact find( Artifact artifact )
{
http://git-wip-us.apache.org/repos/asf/maven/blob/1be7ea89/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java
----------------------------------------------------------------------
diff --git a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java
index ad08549..43aa47c 100644
--- a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java
+++ b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LifecycleExecutionPlanCalculatorStub.java
@@ -87,7 +87,10 @@ public class LifecycleExecutionPlanCalculatorStub
public final static MojoDescriptor SITE_DEPLOY = createMojoDescriptor( "site-deploy" );
-
+ /**
+ * @deprecated instead use {@link #getNumberOfExecutions()}
+ */
+ @Deprecated
public int getNumberOfExceutions( ProjectBuildList projectBuildList )
throws InvalidPluginDescriptorException, PluginVersionResolutionException, PluginDescriptorParsingException,
NoPluginFoundForPrefixException, MojoNotFoundException, PluginNotFoundException, PluginResolutionException,
@@ -103,6 +106,14 @@ public class LifecycleExecutionPlanCalculatorStub
return result;
}
+ public int getNumberOfExecutions( ProjectBuildList projectBuildList )
+ throws InvalidPluginDescriptorException, PluginVersionResolutionException, PluginDescriptorParsingException,
+ NoPluginFoundForPrefixException, MojoNotFoundException, PluginNotFoundException, PluginResolutionException,
+ LifecyclePhaseNotFoundException, LifecycleNotFoundException
+ {
+ return getNumberOfExceutions( projectBuildList );
+ }
+
public void calculateForkedExecutions( MojoExecution mojoExecution, MavenSession session )
throws MojoNotFoundException, PluginNotFoundException, PluginResolutionException,
PluginDescriptorParsingException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException,
http://git-wip-us.apache.org/repos/asf/maven/blob/1be7ea89/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java
index b56bc15..d8b54b8 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java
@@ -67,6 +67,10 @@ public abstract class AbstractModelInterpolatorTest
assertEquals( "Expected no fatals", 0, collector.getFatals().size() );
}
+ /**
+ * @deprecated instead use {@link #assertCollectorState()}
+ */
+ @Deprecated
protected void assertColllectorState( int numFatals, int numErrors, int numWarnings,
SimpleProblemCollector collector )
{
@@ -75,6 +79,12 @@ public abstract class AbstractModelInterpolatorTest
assertEquals( "Fatals", numFatals, collector.getFatals().size() );
}
+ protected void assertCollectorState( int numFatals, int numErrors, int numWarnings,
+ SimpleProblemCollector collector )
+ {
+ assertColllectorState(numFatals, numErrors, numWarnings, collector);
+ }
+
private ModelBuildingRequest createModelBuildingRequest( Properties p )
{
ModelBuildingRequest config = new DefaultModelBuildingRequest();
@@ -178,7 +188,7 @@ public abstract class AbstractModelInterpolatorTest
final SimpleProblemCollector collector = new SimpleProblemCollector();
interpolator.interpolateModel( model, null, createModelBuildingRequest( context ), collector );
- assertColllectorState( 0, 1, 0, collector );
+ assertCollectorState( 0, 1, 0, collector );
}
catch ( Exception e )
{
@@ -247,7 +257,7 @@ public abstract class AbstractModelInterpolatorTest
final SimpleProblemCollector collector = new SimpleProblemCollector();
Model out =
interpolator.interpolateModel( model, new File( "." ), createModelBuildingRequest( context ), collector );
- assertColllectorState(0, 0, 1, collector );
+ assertCollectorState(0, 0, 1, collector );
assertEquals( "3.8.1", ( out.getDependencies().get( 0 ) ).getVersion() );
}
@@ -305,7 +315,7 @@ public abstract class AbstractModelInterpolatorTest
final SimpleProblemCollector collector = new SimpleProblemCollector();
Model out =
interpolator.interpolateModel( model, new File( "." ), createModelBuildingRequest( context ), collector );
- assertColllectorState( 0, 0, 2, collector );
+ assertCollectorState( 0, 0, 2, collector );
assertEquals( "foo-3.8.1", ( out.getDependencies().get( 0 ) ).getVersion() );
}
@@ -450,7 +460,7 @@ public abstract class AbstractModelInterpolatorTest
final SimpleProblemCollector collector = new SimpleProblemCollector();
Model out = interpolator.interpolateModel( model, null, createModelBuildingRequest( context ), collector );
- assertColllectorState( 0, 0, 2, collector );
+ assertCollectorState( 0, 0, 2, collector );
List<Resource> outResources = out.getBuild().getResources();
[3/9] maven git commit: [MNG-6166] mvn dependency:go-offline fails
due to missing transitive dependency jdom:jdom:jar:1.1
Posted by sc...@apache.org.
[MNG-6166] mvn dependency:go-offline fails due to missing transitive dependency jdom:jdom:jar:1.1
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/66a0fbe4
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/66a0fbe4
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/66a0fbe4
Branch: refs/heads/DEPMGMT-IMPORT
Commit: 66a0fbe495f7df45562bee22188341899e1ca839
Parents: 1be7ea8
Author: Archimedes Trajano <tr...@yahoo.com>
Authored: Sat Feb 4 00:41:58 2017 +0100
Committer: Michael Osipov <mi...@apache.org>
Committed: Mon Feb 6 20:36:39 2017 +0100
----------------------------------------------------------------------
maven-core/src/test/resources-project-builder/foo/sub/pom.xml | 4 ----
pom.xml | 2 +-
2 files changed, 1 insertion(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/66a0fbe4/maven-core/src/test/resources-project-builder/foo/sub/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources-project-builder/foo/sub/pom.xml b/maven-core/src/test/resources-project-builder/foo/sub/pom.xml
index c5e3d9a..dc10bd1 100644
--- a/maven-core/src/test/resources-project-builder/foo/sub/pom.xml
+++ b/maven-core/src/test/resources-project-builder/foo/sub/pom.xml
@@ -25,10 +25,6 @@
<artifactId>dom4j</artifactId>
</dependency>
<dependency>
- <groupId>jdom</groupId>
- <artifactId>jdom</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/maven/blob/66a0fbe4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 75bdb87..83b7b18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@ under the License.
<commonsCliVersion>1.2</commonsCliVersion>
<commonsLangVersion>3.4</commonsLangVersion>
<junitVersion>4.11</junitVersion>
- <plexusVersion>1.6</plexusVersion>
+ <plexusVersion>1.7.1</plexusVersion>
<plexusInterpolationVersion>1.21</plexusInterpolationVersion>
<plexusUtilsVersion>3.0.22</plexusUtilsVersion>
<!-- Latest version of Guava that works with Sisu -->
[8/9] maven git commit: [MNG-5600] Dependency management import
should support exclusions.
Posted by sc...@apache.org.
[MNG-5600] Dependency management import should support exclusions.
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/867ac75c
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/867ac75c
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/867ac75c
Branch: refs/heads/DEPMGMT-IMPORT
Commit: 867ac75c229ac100a7f9282740165914b15b614b
Parents: 41e7391
Author: Christian Schulte <sc...@apache.org>
Authored: Sun Jun 19 16:32:25 2016 +0200
Committer: Christian Schulte <sc...@apache.org>
Committed: Fri Feb 10 18:40:52 2017 +0100
----------------------------------------------------------------------
.../model/building/DefaultModelBuilder.java | 59 +++++++++++++++-----
1 file changed, 45 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/867ac75c/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 5fa52a6..0047c53 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -19,7 +19,16 @@ package org.apache.maven.model.building;
* under the License.
*/
-
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
import org.apache.commons.lang3.Validate;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
@@ -28,6 +37,7 @@ import org.apache.maven.model.Activation;
import org.apache.maven.model.Build;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Exclusion;
import org.apache.maven.model.InputLocation;
import org.apache.maven.model.InputSource;
import org.apache.maven.model.Model;
@@ -62,18 +72,6 @@ import org.apache.maven.model.superpom.SuperPomProvider;
import org.apache.maven.model.validation.ModelValidator;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
import static org.apache.maven.model.building.Result.error;
import static org.apache.maven.model.building.Result.newResult;
@@ -1223,7 +1221,40 @@ public class DefaultModelBuilder
importMgmt = new DependencyManagement();
}
- putCache( request.getModelCache(), groupId, artifactId, version, ModelCacheTag.IMPORT, importMgmt );
+ // [MNG-5600] Dependency management import should support exclusions.
+ if ( !dependency.getExclusions().isEmpty() )
+ {
+ for ( final Exclusion exclusion : dependency.getExclusions() )
+ {
+ if ( exclusion.getGroupId() != null && exclusion.getArtifactId() != null )
+ {
+ for ( final Iterator<Dependency> dependencies = importMgmt.getDependencies().iterator();
+ dependencies.hasNext(); )
+ {
+ final Dependency candidate = dependencies.next();
+
+ if ( ( exclusion.getGroupId().equals( "*" )
+ || exclusion.getGroupId().equals( candidate.getGroupId() ) )
+ && ( exclusion.getArtifactId().equals( "*" )
+ || exclusion.getArtifactId().equals( candidate.getArtifactId() ) ) )
+ {
+ // Dependency excluded from import.
+ dependencies.remove();
+ }
+ }
+ }
+ }
+
+ for ( final Dependency includedDependency : importMgmt.getDependencies() )
+ {
+ includedDependency.getExclusions().addAll( dependency.getExclusions() );
+ }
+ }
+ else
+ {
+ // Only dependency managements without exclusion processing applied can be cached.
+ putCache( request.getModelCache(), groupId, artifactId, version, ModelCacheTag.IMPORT, importMgmt );
+ }
}
if ( importMgmts == null )
[6/9] maven git commit: [MNG-5527] Dependency management import
should support relocations.
Posted by sc...@apache.org.
[MNG-5527] Dependency management import should support relocations.
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/41e73918
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/41e73918
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/41e73918
Branch: refs/heads/DEPMGMT-IMPORT
Commit: 41e739189b19307f920a417e59333d6f6557c250
Parents: c29f43f
Author: Christian Schulte <sc...@apache.org>
Authored: Tue Jun 21 21:35:40 2016 +0200
Committer: Christian Schulte <sc...@apache.org>
Committed: Fri Feb 10 18:40:52 2017 +0100
----------------------------------------------------------------------
.../model/building/DefaultModelBuilder.java | 191 ++++++++++++-------
1 file changed, 126 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/41e73918/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index e07f8e9..5fa52a6 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -1119,8 +1119,6 @@ public class DefaultModelBuilder
final WorkspaceModelResolver workspaceResolver = request.getWorkspaceModelResolver();
final ModelResolver modelResolver = request.getModelResolver();
- ModelBuildingRequest importRequest = null;
-
List<DependencyManagement> importMgmts = null;
for ( Iterator<Dependency> it = depMgmt.getDependencies().iterator(); it.hasNext(); )
@@ -1207,75 +1205,15 @@ public class DefaultModelBuilder
}
}
- // no workspace resolver or workspace resolver returned null (i.e. model not in workspace)
if ( importModel == null )
{
- final ModelSource importSource;
- try
- {
- dependency = dependency.clone();
- importSource = modelResolver.resolveModel( dependency );
- final String resolvedId =
- dependency.getGroupId() + ':' + dependency.getArtifactId() + ':' + dependency.getVersion();
-
- if ( !imported.equals( resolvedId ) && importIds.contains( resolvedId ) )
- {
- // A version range has been resolved to a cycle.
- String message = "The dependencies of type=pom and with scope=import form a cycle: ";
- for ( String modelId : importIds )
- {
- message += modelId + " -> ";
- }
- message += resolvedId;
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).
- setMessage( message ) );
-
- continue;
- }
- }
- catch ( UnresolvableModelException e )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- buffer.append( "Non-resolvable import POM" );
- if ( !containsCoordinates( e.getMessage(), groupId, artifactId, version ) )
- {
- buffer.append( " " ).append( ModelProblemUtils.toId( groupId, artifactId, version ) );
- }
- buffer.append( ": " ).append( e.getMessage() );
-
- problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE )
- .setMessage( buffer.toString() ).setLocation( dependency.getLocation( "" ) )
- .setException( e ) );
- continue;
- }
-
- if ( importRequest == null )
- {
- importRequest = new DefaultModelBuildingRequest();
- importRequest.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
- importRequest.setModelCache( request.getModelCache() );
- importRequest.setSystemProperties( request.getSystemProperties() );
- importRequest.setUserProperties( request.getUserProperties() );
- importRequest.setLocationTracking( request.isLocationTracking() );
- }
-
- importRequest.setModelSource( importSource );
- importRequest.setModelResolver( modelResolver.newCopy() );
+ // no workspace resolver or workspace resolver returned null (i.e. model not in workspace)
+ importModel = this.buildImportModelFromRepository( request, dependency, importIds, problems );
- final ModelBuildingResult importResult;
- try
- {
- importResult = build( importRequest );
- }
- catch ( ModelBuildingException e )
+ if ( importModel == null )
{
- problems.addAll( e.getProblems() );
continue;
}
-
- problems.addAll( importResult.getProblems() );
-
- importModel = importResult.getEffectiveModel();
}
importMgmt = importModel.getDependencyManagement();
@@ -1301,6 +1239,129 @@ public class DefaultModelBuilder
dependencyManagementImporter.importManagement( model, importMgmts, request, problems );
}
+ private Model buildImportModelFromRepository( final ModelBuildingRequest targetModelBuildingRequest,
+ final Dependency dependency, final Collection<String> importIds,
+ final DefaultModelProblemCollector problems )
+ {
+ try
+ {
+ final String imported =
+ String.format( "%s:%s:%s", dependency.getGroupId(), dependency.getArtifactId(),
+ dependency.getVersion() );
+
+ final Dependency resolvedDependency = dependency.clone();
+ final ModelSource importSource =
+ targetModelBuildingRequest.getModelResolver().resolveModel( resolvedDependency );
+
+ final String resolvedId =
+ String.format( "%s:%s:%s", resolvedDependency.getGroupId(), resolvedDependency.getArtifactId(),
+ resolvedDependency.getVersion() );
+
+ if ( !imported.equals( resolvedId ) && importIds.contains( resolvedId ) )
+ {
+ // A version range has been resolved to a cycle.
+ String message = "The dependencies of type=pom and scope=" + dependency.getScope() + " form a cycle: ";
+ for ( String modelId : importIds )
+ {
+ message += modelId + " -> ";
+ }
+ message += resolvedId;
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).setMessage( message ) );
+ }
+ else
+ {
+ final ModelBuildingRequest importRequest = new DefaultModelBuildingRequest();
+ importRequest.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
+ importRequest.setModelCache( targetModelBuildingRequest.getModelCache() );
+ importRequest.setSystemProperties( targetModelBuildingRequest.getSystemProperties() );
+ importRequest.setUserProperties( targetModelBuildingRequest.getUserProperties() );
+ importRequest.setLocationTracking( targetModelBuildingRequest.isLocationTracking() );
+ importRequest.setModelSource( importSource );
+ importRequest.setModelResolver( targetModelBuildingRequest.getModelResolver().newCopy() );
+
+ final ModelBuildingResult importResult = build( importRequest );
+ problems.addAll( importResult.getProblems() );
+
+ Model importModel = importResult.getEffectiveModel();
+
+ if ( importModel.getDistributionManagement() != null
+ && importModel.getDistributionManagement().getRelocation() != null )
+ {
+ final Dependency relocated = dependency.clone();
+ relocated.setGroupId( importModel.getDistributionManagement().getRelocation().getGroupId() );
+ relocated.setArtifactId( importModel.getDistributionManagement().getRelocation().getArtifactId() );
+ relocated.setVersion( importModel.getDistributionManagement().getRelocation().getVersion() );
+
+ // Message below is checked for in the MNG-5527 core IT.
+ String message = String.format(
+ "The dependency of type='%s' and scope='%s' has been relocated to '%s:%s:%s'",
+ dependency.getType(), dependency.getScope(), relocated.getGroupId(),
+ relocated.getArtifactId(), relocated.getVersion() );
+
+ if ( importModel.getDistributionManagement().getRelocation().getMessage() != null )
+ {
+ message += ". " + importModel.getDistributionManagement().getRelocation().getMessage();
+ }
+
+ problems.add( new ModelProblemCollectorRequest( Severity.WARNING, Version.BASE ).
+ setMessage( message ).
+ setLocation( importModel.getDistributionManagement().getRelocation().getLocation( "" ) ) );
+
+ importModel = this.buildImportModelFromRepository(
+ targetModelBuildingRequest, relocated, importIds, problems );
+
+ }
+
+ return importModel;
+ }
+ }
+ catch ( final UnresolvableModelException e )
+ {
+ final StringBuilder buffer = new StringBuilder( 256 );
+ buffer.append( "Non-resolvable " ).append( dependency.getScope() ).append( " POM" );
+
+ if ( !containsCoordinates( e.getMessage(), dependency.getGroupId(), dependency.getArtifactId(),
+ dependency.getVersion() ) )
+ {
+ buffer.append( ' ' ).append( ModelProblemUtils.toId(
+ dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() ) );
+
+ }
+
+ buffer.append( ": " ).append( e.getMessage() );
+
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).
+ setMessage( buffer.toString() ).
+ setLocation( dependency.getLocation( "" ) ).
+ setException( e ) );
+
+ }
+ catch ( final ModelBuildingException e )
+ {
+ final StringBuilder buffer = new StringBuilder( 256 );
+ buffer.append( "Failure building " ).append( dependency.getScope() ).append( " POM" );
+
+ if ( !containsCoordinates( e.getMessage(), dependency.getGroupId(), dependency.getArtifactId(),
+ dependency.getVersion() ) )
+ {
+ buffer.append( ' ' ).append( ModelProblemUtils.toId(
+ dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() ) );
+
+ }
+
+ buffer.append( ": " ).append( e.getMessage() );
+
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).
+ setMessage( buffer.toString() ).
+ setLocation( dependency.getLocation( "" ) ).
+ setException( e ) );
+
+ problems.addAll( e.getProblems() );
+ }
+
+ return null;
+ }
+
private <T> void putCache( ModelCache modelCache, String groupId, String artifactId, String version,
ModelCacheTag<T> tag, T data )
{
[7/9] maven git commit: o Updated to 3.5.1-SNAPSHOT to make the ITs
run.
Posted by sc...@apache.org.
o Updated to 3.5.1-SNAPSHOT to make the ITs run.
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/60df8d37
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/60df8d37
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/60df8d37
Branch: refs/heads/DEPMGMT-IMPORT
Commit: 60df8d378c07ac52e771e68f7768a8adf6a419c2
Parents: 867ac75
Author: Christian Schulte <sc...@apache.org>
Authored: Tue Jan 31 03:17:58 2017 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Fri Feb 10 18:40:52 2017 +0100
----------------------------------------------------------------------
apache-maven/pom.xml | 2 +-
maven-artifact/pom.xml | 2 +-
maven-builder-support/pom.xml | 2 +-
maven-compat/pom.xml | 2 +-
maven-core/pom.xml | 2 +-
maven-embedder/pom.xml | 2 +-
maven-model-builder/pom.xml | 2 +-
maven-model/pom.xml | 2 +-
maven-plugin-api/pom.xml | 2 +-
maven-repository-metadata/pom.xml | 2 +-
maven-resolver-provider/pom.xml | 2 +-
maven-settings-builder/pom.xml | 2 +-
maven-settings/pom.xml | 2 +-
maven-slf4j-provider/pom.xml | 2 +-
pom.xml | 2 +-
15 files changed, 15 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/apache-maven/pom.xml
----------------------------------------------------------------------
diff --git a/apache-maven/pom.xml b/apache-maven/pom.xml
index 6fc5a73..d313f80 100644
--- a/apache-maven/pom.xml
+++ b/apache-maven/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>apache-maven</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-artifact/pom.xml
----------------------------------------------------------------------
diff --git a/maven-artifact/pom.xml b/maven-artifact/pom.xml
index e3943c9..b13482b 100644
--- a/maven-artifact/pom.xml
+++ b/maven-artifact/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-artifact</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-builder-support/pom.xml
----------------------------------------------------------------------
diff --git a/maven-builder-support/pom.xml b/maven-builder-support/pom.xml
index 39eb161..5eb7903 100644
--- a/maven-builder-support/pom.xml
+++ b/maven-builder-support/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-builder-support</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-compat/pom.xml
----------------------------------------------------------------------
diff --git a/maven-compat/pom.xml b/maven-compat/pom.xml
index 2b205f7..b06d3f3 100644
--- a/maven-compat/pom.xml
+++ b/maven-compat/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-compat</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-core/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index 95162bd..b10b329 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-core</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-embedder/pom.xml
----------------------------------------------------------------------
diff --git a/maven-embedder/pom.xml b/maven-embedder/pom.xml
index 30ad2ce..66e09a3 100644
--- a/maven-embedder/pom.xml
+++ b/maven-embedder/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-embedder</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-model-builder/pom.xml
----------------------------------------------------------------------
diff --git a/maven-model-builder/pom.xml b/maven-model-builder/pom.xml
index fbfd417..7cef99b 100644
--- a/maven-model-builder/pom.xml
+++ b/maven-model-builder/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-model-builder</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-model/pom.xml
----------------------------------------------------------------------
diff --git a/maven-model/pom.xml b/maven-model/pom.xml
index 41cf168..aabb25d 100644
--- a/maven-model/pom.xml
+++ b/maven-model/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-model</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-plugin-api/pom.xml
----------------------------------------------------------------------
diff --git a/maven-plugin-api/pom.xml b/maven-plugin-api/pom.xml
index d8f802d..1596a41 100644
--- a/maven-plugin-api/pom.xml
+++ b/maven-plugin-api/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-plugin-api</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-repository-metadata/pom.xml
----------------------------------------------------------------------
diff --git a/maven-repository-metadata/pom.xml b/maven-repository-metadata/pom.xml
index 7480de7..dcc6a22 100644
--- a/maven-repository-metadata/pom.xml
+++ b/maven-repository-metadata/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-repository-metadata</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-resolver-provider/pom.xml
----------------------------------------------------------------------
diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml
index 7d71e33..1540f9b 100644
--- a/maven-resolver-provider/pom.xml
+++ b/maven-resolver-provider/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-resolver-provider</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-settings-builder/pom.xml
----------------------------------------------------------------------
diff --git a/maven-settings-builder/pom.xml b/maven-settings-builder/pom.xml
index 2d415c9..904b085 100644
--- a/maven-settings-builder/pom.xml
+++ b/maven-settings-builder/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-settings-builder</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-settings/pom.xml
----------------------------------------------------------------------
diff --git a/maven-settings/pom.xml b/maven-settings/pom.xml
index 133ee32..eb4ad22 100644
--- a/maven-settings/pom.xml
+++ b/maven-settings/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-settings</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/maven-slf4j-provider/pom.xml
----------------------------------------------------------------------
diff --git a/maven-slf4j-provider/pom.xml b/maven-slf4j-provider/pom.xml
index 81af382..315b9a7 100644
--- a/maven-slf4j-provider/pom.xml
+++ b/maven-slf4j-provider/pom.xml
@@ -25,7 +25,7 @@ under the License.
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<artifactId>maven-slf4j-provider</artifactId>
http://git-wip-us.apache.org/repos/asf/maven/blob/60df8d37/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 83b7b18..2897977 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@ under the License.
</parent>
<artifactId>maven</artifactId>
- <version>3.5.0-SNAPSHOT</version>
+ <version>3.5.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Apache Maven</name>
[4/9] maven git commit: Squashed commit of the following:
Posted by sc...@apache.org.
Squashed commit of the following:
commit f3f981022f9157e9d74a9d9dfef7ae102c4d0593
Author: rfscholte <rf...@apache.org>
Date: Thu Feb 9 11:00:17 2017 +0100
[MNG-6109] PluginDescriptor doesn't read since value of parameter
There's no specific IT, just a unittest, so itBranch should stay on master
commit 862e8e4e3a2b857eeeb4761a1568c15ebb442932
Author: rfscholte <rf...@apache.org>
Date: Wed Feb 8 21:55:30 2017 +0100
[MNG-6109] PluginDescriptor doesn't read since value of parameter
commit 76b539ecf2733b2a8564c18581d60176dc0185a3
Author: rfscholte <rf...@apache.org>
Date: Mon Oct 31 21:05:28 2016 +0100
PluginDescriptor doesn't read since value of parameter
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/f4e07acb
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/f4e07acb
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/f4e07acb
Branch: refs/heads/DEPMGMT-IMPORT
Commit: f4e07acbc2a496a8866b8270e7f7a9fd44085f71
Parents: 66a0fbe
Author: rfscholte <rf...@apache.org>
Authored: Fri Feb 10 17:05:24 2017 +0100
Committer: rfscholte <rf...@apache.org>
Committed: Fri Feb 10 17:05:24 2017 +0100
----------------------------------------------------------------------
.../apache/maven/plugin/descriptor/PluginDescriptorBuilder.java | 2 ++
.../maven/plugin/descriptor/PluginDescriptorBuilderTest.java | 1 +
maven-plugin-api/src/test/resources/plugin.xml | 1 +
3 files changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/f4e07acb/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
----------------------------------------------------------------------
diff --git a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
index 7224554..9508c51 100644
--- a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
+++ b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
@@ -299,6 +299,8 @@ public class PluginDescriptorBuilder
parameter.setImplementation( d.getChild( "implementation" ).getValue() );
+ parameter.setSince( d.getChild( "since" ).getValue() );
+
PlexusConfiguration paramConfig = mojoConfig.getChild( parameter.getName(), false );
if ( paramConfig != null )
{
http://git-wip-us.apache.org/repos/asf/maven/blob/f4e07acb/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
----------------------------------------------------------------------
diff --git a/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java b/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
index 799e3af..b9f5ab9 100644
--- a/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
+++ b/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
@@ -108,6 +108,7 @@ public class PluginDescriptorBuilderTest
assertEquals( "deprecated-parameter", mp.getDeprecated() );
assertEquals( "${jar.finalName}", mp.getExpression() );
assertEquals( "${project.build.finalName}", mp.getDefaultValue() );
+ assertEquals( "3.0.0", mp.getSince() );
ComponentRequirement cr = md.getRequirements().get( 0 );
http://git-wip-us.apache.org/repos/asf/maven/blob/f4e07acb/maven-plugin-api/src/test/resources/plugin.xml
----------------------------------------------------------------------
diff --git a/maven-plugin-api/src/test/resources/plugin.xml b/maven-plugin-api/src/test/resources/plugin.xml
index 6b97211..add46dc 100644
--- a/maven-plugin-api/src/test/resources/plugin.xml
+++ b/maven-plugin-api/src/test/resources/plugin.xml
@@ -60,6 +60,7 @@ under the License.
<editable>true</editable>
<description>parameter-description</description>
<deprecated>deprecated-parameter</deprecated>
+ <since>3.0.0</since>
</parameter>
</parameters>
<configuration>
[9/9] maven git commit: [MNG-4463] Dependency management import
should support version ranges.
Posted by sc...@apache.org.
[MNG-4463] Dependency management import should support version ranges.
o Extended the 'ModelResolver' interface to support resolving 'Dependency's
in addition to 'Parent's.
Closes #64 without merging. ITs are pending to be committed.
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/c29f43f5
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/c29f43f5
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/c29f43f5
Branch: refs/heads/DEPMGMT-IMPORT
Commit: c29f43f56a1498456696813fecc2d1138379195c
Parents: 2836118
Author: Christian Schulte <sc...@apache.org>
Authored: Sat Jan 30 19:17:34 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Fri Feb 10 18:40:52 2017 +0100
----------------------------------------------------------------------
.../maven/project/ProjectModelResolver.java | 83 +++++++++++++++----
.../model/building/DefaultModelBuilder.java | 20 ++++-
.../maven/model/resolution/ModelResolver.java | 32 ++++++++
.../internal/DefaultModelResolver.java | 85 ++++++++++++++++----
4 files changed, 186 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/c29f43f5/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
index 7b93217..e5aa052 100644
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.maven.model.Dependency;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
@@ -203,24 +204,26 @@ public class ProjectModelResolver
return new FileModelSource( pomFile );
}
- public ModelSource resolveModel( Parent parent )
+ @Override
+ public ModelSource resolveModel( final Parent parent )
throws UnresolvableModelException
{
- Artifact artifact = new DefaultArtifact( parent.getGroupId(), parent.getArtifactId(), "", "pom",
- parent.getVersion() );
-
- VersionRangeRequest versionRangeRequest = new VersionRangeRequest( artifact, repositories, context );
- versionRangeRequest.setTrace( trace );
-
try
{
- VersionRangeResult versionRangeResult = resolver.resolveVersionRange( session, versionRangeRequest );
+ final Artifact artifact = new DefaultArtifact( parent.getGroupId(), parent.getArtifactId(), "", "pom",
+ parent.getVersion() );
+
+ final VersionRangeRequest versionRangeRequest = new VersionRangeRequest( artifact, repositories, context );
+ versionRangeRequest.setTrace( trace );
+
+ final VersionRangeResult versionRangeResult = resolver.resolveVersionRange( session, versionRangeRequest );
if ( versionRangeResult.getHighestVersion() == null )
{
- throw new UnresolvableModelException( "No versions matched the requested range '" + parent.getVersion()
- + "'", parent.getGroupId(), parent.getArtifactId(),
- parent.getVersion() );
+ throw new UnresolvableModelException(
+ String.format( "No versions matched the requested parent version range '%s'",
+ parent.getVersion() ),
+ parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
@@ -229,21 +232,69 @@ public class ProjectModelResolver
&& versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
{
// Message below is checked for in the MNG-2199 core IT.
- throw new UnresolvableModelException( "The requested version range '" + parent.getVersion()
- + "' does not specify an upper bound", parent.getGroupId(),
- parent.getArtifactId(), parent.getVersion() );
+ throw new UnresolvableModelException(
+ String.format( "The requested parent version range '%s' does not specify an upper bound",
+ parent.getVersion() ),
+ parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
parent.setVersion( versionRangeResult.getHighestVersion().toString() );
+
+ return resolveModel( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
- catch ( VersionRangeResolutionException e )
+ catch ( final VersionRangeResolutionException e )
{
throw new UnresolvableModelException( e.getMessage(), parent.getGroupId(), parent.getArtifactId(),
parent.getVersion(), e );
}
+ }
+
+ @Override
+ public ModelSource resolveModel( final Dependency dependency )
+ throws UnresolvableModelException
+ {
+ try
+ {
+ final Artifact artifact = new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), "",
+ "pom", dependency.getVersion() );
+
+ final VersionRangeRequest versionRangeRequest = new VersionRangeRequest( artifact, repositories, context );
+ versionRangeRequest.setTrace( trace );
+
+ final VersionRangeResult versionRangeResult = resolver.resolveVersionRange( session, versionRangeRequest );
+
+ if ( versionRangeResult.getHighestVersion() == null )
+ {
+ throw new UnresolvableModelException(
+ String.format( "No versions matched the requested dependency version range '%s'",
+ dependency.getVersion() ),
+ dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
+
+ }
+
+ if ( versionRangeResult.getVersionConstraint() != null
+ && versionRangeResult.getVersionConstraint().getRange() != null
+ && versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
+ {
+ // Message below is checked for in the MNG-4463 core IT.
+ throw new UnresolvableModelException(
+ String.format( "The requested dependency version range '%s' does not specify an upper bound",
+ dependency.getVersion() ),
+ dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
+
+ }
+
+ dependency.setVersion( versionRangeResult.getHighestVersion().toString() );
+
+ return resolveModel( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
+ }
+ catch ( VersionRangeResolutionException e )
+ {
+ throw new UnresolvableModelException( e.getMessage(), dependency.getGroupId(), dependency.getArtifactId(),
+ dependency.getVersion(), e );
- return resolveModel( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
+ }
}
}
http://git-wip-us.apache.org/repos/asf/maven/blob/c29f43f5/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index ac54737..e07f8e9 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -1213,7 +1213,25 @@ public class DefaultModelBuilder
final ModelSource importSource;
try
{
- importSource = modelResolver.resolveModel( groupId, artifactId, version );
+ dependency = dependency.clone();
+ importSource = modelResolver.resolveModel( dependency );
+ final String resolvedId =
+ dependency.getGroupId() + ':' + dependency.getArtifactId() + ':' + dependency.getVersion();
+
+ if ( !imported.equals( resolvedId ) && importIds.contains( resolvedId ) )
+ {
+ // A version range has been resolved to a cycle.
+ String message = "The dependencies of type=pom and with scope=import form a cycle: ";
+ for ( String modelId : importIds )
+ {
+ message += modelId + " -> ";
+ }
+ message += resolvedId;
+ problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ).
+ setMessage( message ) );
+
+ continue;
+ }
}
catch ( UnresolvableModelException e )
{
http://git-wip-us.apache.org/repos/asf/maven/blob/c29f43f5/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java b/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
index c81a536..cb2a3ed 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
@@ -19,6 +19,7 @@ package org.apache.maven.model.resolution;
* under the License.
*/
+import org.apache.maven.model.Dependency;
import org.apache.maven.model.Parent;
import org.apache.maven.model.Repository;
import org.apache.maven.model.building.ModelSource;
@@ -47,16 +48,47 @@ public interface ModelResolver
/**
* Tries to resolve the POM for the specified parent coordinates possibly updating {@code parent}.
+ * <p>
+ * Unlike the {@link #resolveModel(java.lang.String, java.lang.String, java.lang.String)} method, this method
+ * supports version ranges and updates the given {@code parent} instance to match the returned {@code ModelSource}.
+ * If {@code parent} declares a version range, the version corresponding to the returned {@code ModelSource} will
+ * be set on the given {@code parent}.
+ * </p>
*
* @param parent The parent coordinates to resolve, must not be {@code null}.
+ *
* @return The source of the requested POM, never {@code null}.
+ *
* @throws UnresolvableModelException If the POM could not be resolved from any configured repository.
* @since 3.2.2
+ *
+ * @see Parent#clone()
*/
ModelSource resolveModel( Parent parent )
throws UnresolvableModelException;
/**
+ * Tries to resolve the POM for the specified dependency coordinates possibly updating {@code dependency}.
+ * <p>
+ * Unlike the {@link #resolveModel(java.lang.String, java.lang.String, java.lang.String)} method, this method
+ * supports version ranges and updates the given {@code dependency} instance to match the returned
+ * {@code ModelSource}. If {@code dependency} declares a version range, the version corresponding to the returned
+ * {@code ModelSource} will be set on the given {@code dependency}.
+ * </p>
+ *
+ * @param dependency The dependency coordinates to resolve, must not be {@code null}.
+ *
+ * @return The source of the requested POM, never {@code null}.
+ *
+ * @throws UnresolvableModelException If the POM could not be resolved from any configured repository.
+ * @since 3.4
+ *
+ * @see Dependency#clone()
+ */
+ ModelSource resolveModel( Dependency dependency )
+ throws UnresolvableModelException;
+
+ /**
* Adds a repository to use for subsequent resolution requests. The order in which repositories are added matters,
* repositories that were added first should also be searched first. When multiple repositories with the same
* identifier are added, only the first repository being added will be used.
http://git-wip-us.apache.org/repos/asf/maven/blob/c29f43f5/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
----------------------------------------------------------------------
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
index 9ea91ff..260a770 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.maven.model.Dependency;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import org.apache.maven.model.Parent;
@@ -182,25 +183,27 @@ class DefaultModelResolver
return new FileModelSource( pomFile );
}
- public ModelSource resolveModel( Parent parent )
+ @Override
+ public ModelSource resolveModel( final Parent parent )
throws UnresolvableModelException
{
- Artifact artifact = new DefaultArtifact( parent.getGroupId(), parent.getArtifactId(), "", "pom",
- parent.getVersion() );
-
- VersionRangeRequest versionRangeRequest = new VersionRangeRequest( artifact, repositories, context );
- versionRangeRequest.setTrace( trace );
-
try
{
- VersionRangeResult versionRangeResult =
+ final Artifact artifact = new DefaultArtifact( parent.getGroupId(), parent.getArtifactId(), "", "pom",
+ parent.getVersion() );
+
+ final VersionRangeRequest versionRangeRequest = new VersionRangeRequest( artifact, repositories, context );
+ versionRangeRequest.setTrace( trace );
+
+ final VersionRangeResult versionRangeResult =
versionRangeResolver.resolveVersionRange( session, versionRangeRequest );
if ( versionRangeResult.getHighestVersion() == null )
{
- throw new UnresolvableModelException( "No versions matched the requested range '" + parent.getVersion()
- + "'", parent.getGroupId(), parent.getArtifactId(),
- parent.getVersion() );
+ throw new UnresolvableModelException(
+ String.format( "No versions matched the requested parent version range '%s'",
+ parent.getVersion() ),
+ parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
@@ -209,22 +212,70 @@ class DefaultModelResolver
&& versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
{
// Message below is checked for in the MNG-2199 core IT.
- throw new UnresolvableModelException( "The requested version range '" + parent.getVersion()
- + "' does not specify an upper bound", parent.getGroupId(),
- parent.getArtifactId(), parent.getVersion() );
+ throw new UnresolvableModelException(
+ String.format( "The requested parent version range '%s' does not specify an upper bound",
+ parent.getVersion() ),
+ parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
parent.setVersion( versionRangeResult.getHighestVersion().toString() );
+
+ return resolveModel( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
- catch ( VersionRangeResolutionException e )
+ catch ( final VersionRangeResolutionException e )
{
throw new UnresolvableModelException( e.getMessage(), parent.getGroupId(), parent.getArtifactId(),
parent.getVersion(), e );
}
-
- return resolveModel( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
+ @Override
+ public ModelSource resolveModel( final Dependency dependency )
+ throws UnresolvableModelException
+ {
+ try
+ {
+ final Artifact artifact = new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), "",
+ "pom", dependency.getVersion() );
+
+ final VersionRangeRequest versionRangeRequest = new VersionRangeRequest( artifact, repositories, context );
+ versionRangeRequest.setTrace( trace );
+
+ final VersionRangeResult versionRangeResult =
+ versionRangeResolver.resolveVersionRange( session, versionRangeRequest );
+
+ if ( versionRangeResult.getHighestVersion() == null )
+ {
+ throw new UnresolvableModelException(
+ String.format( "No versions matched the requested dependency version range '%s'",
+ dependency.getVersion() ),
+ dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
+
+ }
+
+ if ( versionRangeResult.getVersionConstraint() != null
+ && versionRangeResult.getVersionConstraint().getRange() != null
+ && versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
+ {
+ // Message below is checked for in the MNG-4463 core IT.
+ throw new UnresolvableModelException(
+ String.format( "The requested dependency version range '%s' does not specify an upper bound",
+ dependency.getVersion() ),
+ dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
+
+ }
+
+ dependency.setVersion( versionRangeResult.getHighestVersion().toString() );
+
+ return resolveModel( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion() );
+ }
+ catch ( VersionRangeResolutionException e )
+ {
+ throw new UnresolvableModelException( e.getMessage(), dependency.getGroupId(), dependency.getArtifactId(),
+ dependency.getVersion(), e );
+
+ }
+ }
}
[5/9] maven git commit: [MNG-2199] Support version ranges in parent
elements
Posted by sc...@apache.org.
[MNG-2199] Support version ranges in parent elements
o Updated to fix parent version range resolution broken since 3.2.3 and to
remove parent version range resolution logic obsolete since Maven
3.2.3 which changed the initialization of MavenProject instances.
o Updated local parent resolution to behave the same way remote parent
resolution behaves. When referencing a parent using version ranges,
inheriting the version or using version expressions should not be supported.
It has been implemented that way for remote parent resolution as it got
introduced in Maven 3.2.2. For local parent resolution the version in parent
declarations had been ignored completely as of Maven 3.3.0 due to commit
be3fb200326208ca4b8c41ebf16d5ae6b8049792 removing all local parent version
validation. Work on fixing this is tracked by MNG-5840 released with Maven
3.3.9. This commit adds the final missing bits to make local and remote parent
resolution behave the same way as much as possible. As an exception, remote
parent resolution still is a bit more strict than local parent resolution due
to a different API in use. When resolving a parent from a repository using
version ranges, the ModelBuilder verifies the range in use to declare an upper
bound. When resolving a parent locally using version ranges, those ranges are
not required to declare an upper bound because the API in use does not support
querying that. Authoring a POM relying on this difference should be considered
a bug.
o Added test cases to maven-core testing parent version range resolution for
local and remote parent models.
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/28361182
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/28361182
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/28361182
Branch: refs/heads/DEPMGMT-IMPORT
Commit: 28361182905332a50b37bccf63b7e132d5fc68b2
Parents: f4e07ac
Author: Christian Schulte <sc...@apache.org>
Authored: Sat Dec 12 20:28:56 2015 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Fri Feb 10 18:39:24 2017 +0100
----------------------------------------------------------------------
.../maven/project/DefaultProjectBuilder.java | 113 +++++++++-------
.../project/DefaultProjectBuildingRequest.java | 15 ++-
.../maven/project/ProjectBuildingRequest.java | 14 +-
.../maven/project/ProjectModelResolver.java | 1 +
.../project/AbstractMavenProjectTestCase.java | 11 ++
.../project/DefaultMavenProjectBuilderTest.java | 130 +++++++++++++++++++
.../repository/TestRepositoryConnector.java | 38 ++++++
.../org/apache/apache/1/apache-1.pom | 82 ++++++++++++
.../org/apache/apache/maven-metadata.xml | 13 ++
.../pom.xml | 12 ++
.../pom.xml | 11 ++
.../parent-version-range-external-valid/pom.xml | 11 ++
.../child/pom.xml | 12 ++
.../pom.xml | 7 +
.../child/pom.xml | 11 ++
.../pom.xml | 7 +
.../child/pom.xml | 11 ++
.../parent-version-range-local-valid/pom.xml | 7 +
.../model/building/DefaultModelBuilder.java | 30 ++++-
.../internal/DefaultModelResolver.java | 1 +
20 files changed, 482 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index d064ab4..869e584 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -43,7 +43,6 @@ import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.DeploymentRepository;
import org.apache.maven.model.Extension;
import org.apache.maven.model.Model;
-import org.apache.maven.model.Parent;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.Profile;
import org.apache.maven.model.ReportPlugin;
@@ -73,9 +72,6 @@ import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.repository.WorkspaceRepository;
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
/**
*/
@@ -298,44 +294,6 @@ public class DefaultProjectBuilder
boolean localProject;
- if ( request.isResolveVersionRanges() )
- {
- VersionRangeRequest versionRangeRequest = new VersionRangeRequest( pomArtifact, config.repositories, null );
-
- try
- {
- VersionRangeResult versionRangeResult =
- repoSystem.resolveVersionRange( config.session, versionRangeRequest );
-
- if ( versionRangeResult.getHighestVersion() == null )
- {
- throw new ProjectBuildingException(
- artifact.getId(), "Error resolving project artifact: No versions matched the requested range",
- (Throwable) null );
-
- }
-
- if ( versionRangeResult.getVersionConstraint() != null
- && versionRangeResult.getVersionConstraint().getRange() != null
- && versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
- {
- throw new ProjectBuildingException(
- artifact.getId(),
- "Error resolving project artifact: The requested version range does not specify an upper bound",
- (Throwable) null );
-
- }
-
- pomArtifact = pomArtifact.setVersion( versionRangeResult.getHighestVersion().toString() );
- }
- catch ( VersionRangeResolutionException e )
- {
- throw new ProjectBuildingException(
- artifact.getId(), "Error resolving project artifact: " + e.getMessage(), e );
-
- }
- }
-
try
{
ArtifactRequest pomRequest = new ArtifactRequest();
@@ -656,11 +614,20 @@ public class DefaultProjectBuilder
project.setModel( model );
project.setOriginalModel( result.getRawModel() );
project.setFile( model.getPomFile() );
- Parent p = model.getParent();
- if ( p != null )
+
+ Model parentModel = result.getModelIds().size() > 1 && !result.getModelIds().get( 1 ).isEmpty()
+ ? result.getRawModel( result.getModelIds().get( 1 ) )
+ : null;
+
+ if ( parentModel != null )
{
- project.setParentArtifact( repositorySystem.createProjectArtifact( p.getGroupId(), p.getArtifactId(),
- p.getVersion() ) );
+ final String parentGroupId = inheritedGroupId( result, 1 );
+ final String parentVersion = inheritedVersion( result, 1 );
+
+ project.setParentArtifact( repositorySystem.createProjectArtifact( parentGroupId,
+ parentModel.getArtifactId(),
+ parentVersion ) );
+
// org.apache.maven.its.mng4834:parent:0.1
String parentModelId = result.getModelIds().get( 1 );
File parentPomFile = result.getRawModel( parentModelId ).getPomFile();
@@ -683,7 +650,16 @@ public class DefaultProjectBuilder
catch ( ProjectBuildingException e )
{
// MNG-4488 where let invalid parents slide on by
- logger.warn( "Failed to build parent project for " + project.getId() );
+ if ( logger.isDebugEnabled() )
+ {
+ // Message below is checked for in the MNG-2199 core IT.
+ logger.warn( "Failed to build parent project for " + project.getId(), e );
+ }
+ else
+ {
+ // Message below is checked for in the MNG-2199 core IT.
+ logger.warn( "Failed to build parent project for " + project.getId() );
+ }
}
}
else
@@ -696,7 +672,14 @@ public class DefaultProjectBuilder
catch ( ProjectBuildingException e )
{
// MNG-4488 where let invalid parents slide on by
- logger.warn( "Failed to build parent project for " + project.getId() );
+ if ( logger.isDebugEnabled() )
+ {
+ logger.warn( "Failed to build parent project for " + project.getId(), e );
+ }
+ else
+ {
+ logger.warn( "Failed to build parent project for " + project.getId() );
+ }
}
}
}
@@ -878,6 +861,40 @@ public class DefaultProjectBuilder
}
}
+ private static String inheritedGroupId( final ModelBuildingResult result, final int modelIndex )
+ {
+ String groupId = null;
+ final String modelId = result.getModelIds().get( modelIndex );
+
+ if ( !modelId.isEmpty() )
+ {
+ final Model model = result.getRawModel( modelId );
+ groupId = model.getGroupId() != null
+ ? model.getGroupId()
+ : inheritedGroupId( result, modelIndex + 1 );
+
+ }
+
+ return groupId;
+ }
+
+ private static String inheritedVersion( final ModelBuildingResult result, final int modelIndex )
+ {
+ String version = null;
+ final String modelId = result.getModelIds().get( modelIndex );
+
+ if ( !modelId.isEmpty() )
+ {
+ final Model model = result.getRawModel( modelId );
+ version = model.getVersion() != null
+ ? model.getVersion()
+ : inheritedVersion( result, modelIndex + 1 );
+
+ }
+
+ return version;
+ }
+
private String findProfilesXml( ModelBuildingResult result, Map<File, Boolean> profilesXmls )
{
for ( String modelId : result.getModelIds() )
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
index f1b271b..dafbefd 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
@@ -63,6 +63,7 @@ public class DefaultProjectBuildingRequest
private boolean resolveDependencies;
+ @Deprecated
private boolean resolveVersionRanges;
private RepositoryMerging repositoryMerging = RepositoryMerging.POM_DOMINANT;
@@ -218,14 +219,24 @@ public class DefaultProjectBuildingRequest
return resolveDependencies;
}
- /** @since 3.2.2 */
+ /**
+ * @since 3.2.2
+ * @deprecated This got added when implementing MNG-2199 and is no longer used.
+ * Commit 6cf9320942c34bc68205425ab696b1712ace9ba4 updated the way 'MavenProject' objects are initialized.
+ */
+ @Deprecated
public ProjectBuildingRequest setResolveVersionRanges( boolean value )
{
this.resolveVersionRanges = value;
return this;
}
- /** @since 3.2.2 */
+ /**
+ * @since 3.2.2
+ * @deprecated This got added when implementing MNG-2199 and is no longer used.
+ * Commit 6cf9320942c34bc68205425ab696b1712ace9ba4 updated the way 'MavenProject' objects are initialized.
+ */
+ @Deprecated
public boolean isResolveVersionRanges()
{
return this.resolveVersionRanges;
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java b/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
index d8ab195..d0e4afe 100644
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
@@ -168,10 +168,20 @@ public interface ProjectBuildingRequest
*/
RepositoryMerging getRepositoryMerging();
- /** @since 3.2.2 */
+ /**
+ * @since 3.2.2
+ * @deprecated This got added when implementing MNG-2199 and is no longer used.
+ * Commit 6cf9320942c34bc68205425ab696b1712ace9ba4 updated the way 'MavenProject' objects are initialized.
+ */
+ @Deprecated
boolean isResolveVersionRanges();
- /** @since 3.2.2 */
+ /**
+ * @since 3.2.2
+ * @deprecated This got added when implementing MNG-2199 and is no longer used.
+ * Commit 6cf9320942c34bc68205425ab696b1712ace9ba4 updated the way 'MavenProject' objects are initialized.
+ */
+ @Deprecated
ProjectBuildingRequest setResolveVersionRanges( boolean value );
/**
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
index 184be70..7b93217 100644
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
@@ -228,6 +228,7 @@ public class ProjectModelResolver
&& versionRangeResult.getVersionConstraint().getRange() != null
&& versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
{
+ // Message below is checked for in the MNG-2199 core IT.
throw new UnresolvableModelException( "The requested version range '" + parent.getVersion()
+ "' does not specify an upper bound", parent.getGroupId(),
parent.getArtifactId(), parent.getVersion() );
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
----------------------------------------------------------------------
diff --git a/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java b/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
index 73bdbca..71616fa 100644
--- a/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
+++ b/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
@@ -169,6 +169,17 @@ public abstract class AbstractMavenProjectTestCase
return projectBuilder.build( pom, configuration ).getProject();
}
+ protected MavenProject getProjectFromRemoteRepository( final File pom )
+ throws Exception
+ {
+ final ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
+ configuration.setLocalRepository( this.getLocalRepository() );
+ configuration.setRemoteRepositories( Arrays.asList( this.repositorySystem.createDefaultRemoteRepository() ) );
+ initRepoSession( configuration );
+
+ return projectBuilder.build( pom, configuration ).getProject();
+ }
+
protected ProjectBuildingRequest newBuildingRequest()
throws Exception
{
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
index 84fb784..73629bc 100644
--- a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
@@ -189,4 +189,134 @@ public class DefaultMavenProjectBuilderTest
request.setResolveDependencies( true );
projectBuilder.build( pomFile, request );
}
+
+ /**
+ * Tests whether local version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildValidParentVersionRangeLocally() throws Exception
+ {
+ File f1 = getTestFile( "src/test/resources/projects/parent-version-range-local-valid/child/pom.xml" );
+
+ final MavenProject childProject = getProject( f1 );
+
+ assertNotNull( childProject.getParentArtifact() );
+ assertEquals( childProject.getParentArtifact().getVersion(), "1" );
+ assertNotNull( childProject.getParent() );
+ assertEquals( childProject.getParent().getVersion(), "1" );
+ assertNotNull( childProject.getModel().getParent() );
+ assertEquals( childProject.getModel().getParent().getVersion(), "[1,10]" );
+ }
+
+ /**
+ * Tests whether local version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeLocallyWithoutChildVersion() throws Exception
+ {
+ File f1 =
+ getTestFile( "src/test/resources/projects/parent-version-range-local-child-without-version/child/pom.xml" );
+
+ try
+ {
+ getProject( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertTrue( e.getMessage().contains( "Version must be a constant" ) );
+ }
+ }
+
+ /**
+ * Tests whether local version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeLocallyWithChildVersionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml" );
+
+ try
+ {
+ getProject( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertTrue( e.getMessage().contains( "Version must be a constant" ) );
+ }
+ }
+
+ /**
+ * Tests whether external version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeExternally() throws Exception
+ {
+ File f1 = getTestFile( "src/test/resources/projects/parent-version-range-external-valid/pom.xml" );
+
+ final MavenProject childProject = this.getProjectFromRemoteRepository( f1 );
+
+ assertNotNull( childProject.getParentArtifact() );
+ assertEquals( childProject.getParentArtifact().getVersion(), "1" );
+ assertNotNull( childProject.getParent() );
+ assertEquals( childProject.getParent().getVersion(), "1" );
+ assertNotNull( childProject.getModel().getParent() );
+ assertEquals( childProject.getModel().getParent().getVersion(), "[1,1]" );
+ }
+
+ /**
+ * Tests whether external version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeExternallyWithoutChildVersion() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-external-child-without-version/pom.xml" );
+
+ try
+ {
+ this.getProjectFromRemoteRepository( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertTrue( e.getMessage().contains( "Version must be a constant" ) );
+ }
+ }
+
+ /**
+ * Tests whether external version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeExternallyWithChildVersionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml" );
+
+ try
+ {
+ this.getProjectFromRemoteRepository( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertTrue( e.getMessage().contains( "Version must be a constant" ) );
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java
----------------------------------------------------------------------
diff --git a/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java b/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java
index 91ace4f..cb1243c 100644
--- a/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java
+++ b/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnector.java
@@ -27,6 +27,7 @@ import java.util.Collection;
import org.codehaus.plexus.util.FileUtils;
import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.metadata.Metadata;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.spi.connector.ArtifactDownload;
import org.eclipse.aether.spi.connector.ArtifactUpload;
@@ -35,6 +36,8 @@ import org.eclipse.aether.spi.connector.MetadataUpload;
import org.eclipse.aether.spi.connector.RepositoryConnector;
import org.eclipse.aether.transfer.ArtifactNotFoundException;
import org.eclipse.aether.transfer.ArtifactTransferException;
+import org.eclipse.aether.transfer.MetadataNotFoundException;
+import org.eclipse.aether.transfer.MetadataTransferException;
/**
* @author Benjamin Bentmann
@@ -89,6 +92,28 @@ public class TestRepositoryConnector
}
}
}
+ if ( metadataDownloads != null )
+ {
+ for ( final MetadataDownload download : metadataDownloads )
+ {
+ File remoteFile = new File( basedir, path( download.getMetadata() ) );
+ try
+ {
+ FileUtils.copyFile( remoteFile, download.getFile() );
+ }
+ catch ( IOException e )
+ {
+ if ( !remoteFile.exists() )
+ {
+ download.setException( new MetadataNotFoundException( download.getMetadata(), repository ) );
+ }
+ else
+ {
+ download.setException( new MetadataTransferException( download.getMetadata(), repository, e ) );
+ }
+ }
+ }
+ }
}
private String path( Artifact artifact )
@@ -113,6 +138,19 @@ public class TestRepositoryConnector
return path.toString();
}
+ private String path( Metadata metadata )
+ {
+ StringBuilder path = new StringBuilder( 128 );
+
+ path.append( metadata.getGroupId().replace( '.', '/' ) ).append( '/' );
+
+ path.append( metadata.getArtifactId() ).append( '/' );
+
+ path.append( "maven-metadata.xml" );
+
+ return path.toString();
+ }
+
public void put( Collection<? extends ArtifactUpload> artifactUploads,
Collection<? extends MetadataUpload> metadataUploads )
{
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/remote-repo/org/apache/apache/1/apache-1.pom
----------------------------------------------------------------------
diff --git a/maven-core/src/test/remote-repo/org/apache/apache/1/apache-1.pom b/maven-core/src/test/remote-repo/org/apache/apache/1/apache-1.pom
new file mode 100644
index 0000000..ad6b854
--- /dev/null
+++ b/maven-core/src/test/remote-repo/org/apache/apache/1/apache-1.pom
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Copyright 2005-2006 The Apache Software Foundation.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<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>
+
+ <!-- Shared parent. Doesn't define a lot of things about Apache like general mailing lists, but does
+ define the settings common to all projects at Apache -->
+ <groupId>org.apache</groupId>
+ <artifactId>apache</artifactId>
+ <version>1</version>
+ <packaging>pom</packaging>
+ <name>The Apache Software Foundation</name>
+ <description>
+ The Apache Software Foundation provides support for the Apache community of open-source software projects.
+ The Apache projects are characterized by a collaborative, consensus based development process, an open and
+ pragmatic software license, and a desire to create high quality software that leads the way in its field.
+ We consider ourselves not simply a group of projects sharing a server, but rather a community of developers
+ and users.
+ </description>
+ <licenses>
+ <license>
+ <name>The Apache Software License, Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ <distribution>repo</distribution>
+ </license>
+ </licenses>
+ <organization>
+ <name>Apache Software Foundation</name>
+ <url>http://www.apache.org/</url>
+ </organization>
+ <url>http://www.apache.org/</url>
+ <repositories>
+ <repository>
+ <id>apache.snapshots</id>
+ <name>Apache Snapshot Repository</name>
+ <url>http://svn.apache.org/maven-snapshot-repository</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
+ <distributionManagement>
+ <!-- Site omitted - each project must provide their own -->
+ <repository>
+ <id>apache.releases</id>
+ <name>Apache Release Distribution Repository</name>
+ <url>scp://minotaur.apache.org/www/www.apache.org/dist/maven-repository</url>
+ </repository>
+ <snapshotRepository>
+ <id>apache.snapshots</id>
+ <name>Apache Development Snapshot Repository</name>
+ <url>scp://minotaur.apache.org/www/cvs.apache.org/maven-snapshot-repository</url>
+ </snapshotRepository>
+ </distributionManagement>
+ <mailingLists>
+ <mailingList>
+ <name>Apache Announce List</name>
+ <subscribe>announce-subscribe@apache.org</subscribe>
+ <unsubscribe>announce-unsubscribe@apache.org</unsubscribe>
+ <post>announce@apache.org</post>
+ <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive>
+ </mailingList>
+ </mailingLists>
+</project>
+
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/remote-repo/org/apache/apache/maven-metadata.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/remote-repo/org/apache/apache/maven-metadata.xml b/maven-core/src/test/remote-repo/org/apache/apache/maven-metadata.xml
new file mode 100644
index 0000000..596f967
--- /dev/null
+++ b/maven-core/src/test/remote-repo/org/apache/apache/maven-metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+ <groupId>org.apache</groupId>
+ <artifactId>apache</artifactId>
+ <versioning>
+ <latest>1</latest>
+ <release>1</release>
+ <versions>
+ <version>1</version>
+ </versions>
+ <lastUpdated>20150428055824</lastUpdated>
+ </versioning>
+</metadata>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
new file mode 100644
index 0000000..d07ad6e
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
@@ -0,0 +1,12 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache</groupId>
+ <artifactId>apache</artifactId>
+ <version>[1,1]</version>
+ </parent>
+ <artifactId>child</artifactId>
+ <!-- Must not use expressions from parent due to version range. -->
+ <version>${some.property}</version>
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-external-child-without-version/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-child-without-version/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-child-without-version/pom.xml
new file mode 100644
index 0000000..4f5a004
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-child-without-version/pom.xml
@@ -0,0 +1,11 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache</groupId>
+ <artifactId>apache</artifactId>
+ <version>[1,1]</version>
+ </parent>
+ <artifactId>child</artifactId>
+ <!-- version>2</version Must not inherit version from parent due to version range. -->
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-external-valid/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-valid/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-valid/pom.xml
new file mode 100644
index 0000000..54eea90
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-valid/pom.xml
@@ -0,0 +1,11 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache</groupId>
+ <artifactId>apache</artifactId>
+ <version>[1,1]</version>
+ </parent>
+ <artifactId>child</artifactId>
+ <version>2</version>
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
new file mode 100644
index 0000000..066a11e
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
@@ -0,0 +1,12 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>parent-version-range-local</groupId>
+ <artifactId>parent</artifactId>
+ <version>[1,10]</version>
+ </parent>
+ <artifactId>child</artifactId>
+ <!-- Must not use expressions from parent due to version range. -->
+ <version>${some.property}</version>
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml
new file mode 100644
index 0000000..a82bbf2
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml
@@ -0,0 +1,7 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>parent-version-range-local</groupId>
+ <artifactId>parent</artifactId>
+ <version>1</version>
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/child/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/child/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/child/pom.xml
new file mode 100644
index 0000000..645a8f1
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/child/pom.xml
@@ -0,0 +1,11 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>parent-version-range-local</groupId>
+ <artifactId>parent</artifactId>
+ <version>[1,10]</version>
+ </parent>
+ <artifactId>child</artifactId>
+ <!-- version>1</version Must not inherit version from parent due to version range. -->
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/pom.xml
new file mode 100644
index 0000000..a82bbf2
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-child-without-version/pom.xml
@@ -0,0 +1,7 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>parent-version-range-local</groupId>
+ <artifactId>parent</artifactId>
+ <version>1</version>
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-local-valid/child/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-valid/child/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-valid/child/pom.xml
new file mode 100644
index 0000000..886bcdf
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-valid/child/pom.xml
@@ -0,0 +1,11 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>parent-version-range-local</groupId>
+ <artifactId>parent</artifactId>
+ <version>[1,10]</version>
+ </parent>
+ <artifactId>child</artifactId>
+ <version>1</version>
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-core/src/test/resources/projects/parent-version-range-local-valid/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-valid/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-valid/pom.xml
new file mode 100644
index 0000000..a82bbf2
--- /dev/null
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-valid/pom.xml
@@ -0,0 +1,7 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>parent-version-range-local</groupId>
+ <artifactId>parent</artifactId>
+ <version>1</version>
+ <packaging>pom</packaging>
+</project>
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 6b38926..ac54737 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -333,7 +333,7 @@ public class DefaultModelBuilder
currentData = superData;
}
else if ( currentData == resultData )
- { // First iteration - add initial parent id after version resolution.
+ { // First iteration - add initial id after version resolution.
currentData.setGroupId( currentData.getRawModel().getGroupId() == null ? parentData.getGroupId()
: currentData.getRawModel()
.getGroupId() );
@@ -938,6 +938,28 @@ public class DefaultModelBuilder
// version skew drop back to resolution from the repository
return null;
}
+
+ // Validate versions aren't inherited when using parent ranges the same way as when read externally.
+ if ( childModel.getVersion() == null )
+ {
+ // Message below is checked for in the MNG-2199 core IT.
+ problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )
+ .setMessage( "Version must be a constant" ).setLocation( childModel.getLocation( "" ) ) );
+
+ }
+ else
+ {
+ if ( childModel.getVersion().contains( "${" ) )
+ {
+ // Message below is checked for in the MNG-2199 core IT.
+ problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )
+ .setMessage( "Version must be a constant" )
+ .setLocation( childModel.getLocation( "version" ) ) );
+
+ }
+ }
+
+ // MNG-2199: What else to check here ?
}
catch ( InvalidVersionSpecificationException e )
{
@@ -1001,6 +1023,7 @@ public class DefaultModelBuilder
}
catch ( UnresolvableModelException e )
{
+ // Message below is checked for in the MNG-2199 core IT.
StringBuilder buffer = new StringBuilder( 256 );
buffer.append( "Non-resolvable parent POM" );
if ( !containsCoordinates( e.getMessage(), groupId, artifactId, version ) )
@@ -1048,15 +1071,16 @@ public class DefaultModelBuilder
{
if ( childModel.getVersion() == null )
{
+ // Message below is checked for in the MNG-2199 core IT.
problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )
.setMessage( "Version must be a constant" ).setLocation( childModel.getLocation( "" ) ) );
}
else
{
- if ( childModel.getVersion()
- .contains( "${" ) )
+ if ( childModel.getVersion().contains( "${" ) )
{
+ // Message below is checked for in the MNG-2199 core IT.
problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )
.setMessage( "Version must be a constant" )
.setLocation( childModel.getLocation( "version" ) ) );
http://git-wip-us.apache.org/repos/asf/maven/blob/28361182/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
----------------------------------------------------------------------
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
index f344959..9ea91ff 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
@@ -208,6 +208,7 @@ class DefaultModelResolver
&& versionRangeResult.getVersionConstraint().getRange() != null
&& versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
{
+ // Message below is checked for in the MNG-2199 core IT.
throw new UnresolvableModelException( "The requested version range '" + parent.getVersion()
+ "' does not specify an upper bound", parent.getGroupId(),
parent.getArtifactId(), parent.getVersion() );