mirror of https://github.com/apache/maven.git
[MNG-6490] Maven shall not fail reporting circular dependency when the dependency is a classified secondary artifact
This commit is contained in:
parent
23f5c88d11
commit
e4b53d3f2c
|
@ -546,21 +546,21 @@ public class DefaultModelValidator
|
|||
List<Dependency> dependencies, String prefix,
|
||||
ModelBuildingRequest request )
|
||||
{
|
||||
// We only check for groupId/artifactId cause if there is another
|
||||
// module with the same groupId/artifactId this will fail the build
|
||||
// We only check for groupId/artifactId/version/classifier cause if there is another
|
||||
// module with the same groupId/artifactId/version/classifier this will fail the build
|
||||
// earlier like "Project '...' is duplicated in the reactor.
|
||||
// So it is sufficient to check only groupId/artifactId and not the
|
||||
// So it is sufficient to check only groupId/artifactId/version/classifier and not the
|
||||
// packaging type.
|
||||
for ( Dependency dependency : dependencies )
|
||||
{
|
||||
String key = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
|
||||
String key = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion()
|
||||
+ ( dependency.getClassifier() != null ? ":" + dependency.getClassifier() : "" );
|
||||
String mKey = m.getGroupId() + ":" + m.getArtifactId() + ":" + m.getVersion();
|
||||
if ( key.equals( mKey ) )
|
||||
{
|
||||
// This means a module which is build has a dependency which has the same
|
||||
// groupId, artifactId and version coordinates. This is in consequence
|
||||
// a self reference or in other words a circular reference which can not
|
||||
// being resolved.
|
||||
// groupId, artifactId, version and classifier coordinates. This is in consequence
|
||||
// a self reference or in other words a circular reference which can not being resolved.
|
||||
addViolation( problems, Severity.FATAL, Version.V31, prefix + " " + key, key, "is referencing itself.",
|
||||
dependency );
|
||||
|
||||
|
@ -605,14 +605,14 @@ public class DefaultModelValidator
|
|||
private void validateEffectiveModelAgainstDependency( String prefix, ModelProblemCollector problems, Model m,
|
||||
Dependency d, ModelBuildingRequest request )
|
||||
{
|
||||
String key = d.getGroupId() + ":" + d.getArtifactId() + ":" + d.getVersion();
|
||||
String key = d.getGroupId() + ":" + d.getArtifactId() + ":" + d.getVersion()
|
||||
+ ( d.getClassifier() != null ? ":" + d.getClassifier() : "" );
|
||||
String mKey = m.getGroupId() + ":" + m.getArtifactId() + ":" + m.getVersion();
|
||||
if ( key.equals( mKey ) )
|
||||
{
|
||||
// This means a module which is build has a dependency which has the same
|
||||
// groupId, artifactId and version coordinates. This is in consequence
|
||||
// a self reference or in other words a circular reference which can not
|
||||
// being resolved.
|
||||
// groupId, artifactId, version and classifier coordinates. This is in consequence
|
||||
// a self reference or in other words a circular reference which can not being resolved.
|
||||
addViolation( problems, Severity.FATAL, Version.V31, prefix + " " + key, key, "is referencing itself.", d );
|
||||
|
||||
}
|
||||
|
|
|
@ -729,6 +729,13 @@ public class DefaultModelValidatorTest
|
|||
|
||||
}
|
||||
|
||||
public void testSelfReferencingDependencyWithClassifierInRawModel() throws Exception
|
||||
{
|
||||
SimpleProblemCollector result = validateRaw( "raw-model/self-referencing-classifier.xml" );
|
||||
|
||||
assertViolations( result, 0, 0, 0 );
|
||||
}
|
||||
|
||||
public void testCiFriendlySha1()
|
||||
throws Exception
|
||||
{
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you 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/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.example.group</groupId>
|
||||
<artifactId>testvalidpom</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<description>
|
||||
This will test if the module validator recognized that this dependency with classifier
|
||||
is not the same as the module itself.
|
||||
</description>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.example.group</groupId>
|
||||
<artifactId>testvalidpom</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<classifier>linux</classifier>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
Loading…
Reference in New Issue