Author: rfscholte
Date: Tue May 8 20:56:27 2012
New Revision: 1335761
URL: http://svn.apache.org/viewvc?rev=1335761&view=rev
Log:
Fix MENFORCER-118: DependencyConvergence gets better if it doesn't fail on
snapshots of same baseVersion
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
URL:
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java?rev=1335761&r1=1335760&r2=1335761&view=diff
==============================================================================
---
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
(original)
+++
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
Tue May 8 20:56:27 2012
@@ -51,7 +51,14 @@ public class DependencyConvergence
private static Log log;
private static I18N i18n;
+
+ private boolean uniqueVersions;
+ public void setUniqueVersions( boolean uniqueVersions )
+ {
+ this.uniqueVersions = uniqueVersions;
+ }
+
/**
* Uses the {@link EnforcerRuleHelper} to populate the values of the
* {@link DependencyTreeBuilder#buildDependencyTree(MavenProject,
ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter,
ArtifactCollector)}
@@ -109,8 +116,8 @@ public class DependencyConvergence
i18n = (I18N) helper.getComponent( I18N.class );
}
DependencyNode node = getNode( helper );
- MavenProject project = (MavenProject) helper.evaluate(
"${project}" );
- DependencyVersionMap visitor = new DependencyVersionMap(
project.getArtifact().isRelease(), log );
+ DependencyVersionMap visitor = new DependencyVersionMap( log );
+ visitor.setUniqueVersions( uniqueVersions );
node.accept( visitor );
List<CharSequence> errorMsgs = new ArrayList<CharSequence>();
errorMsgs.addAll( getConvergenceErrorMsgs(
visitor.getConflictedVersionNumbers() ) );
@@ -123,10 +130,6 @@ public class DependencyConvergence
throw new EnforcerRuleException( "Failed while enforcing
releasability the error(s) are " + errorMsgs );
}
}
- catch ( ExpressionEvaluationException e )
- {
- throw new EnforcerRuleException( "Unable to lookup an expression "
+ e.getLocalizedMessage(), e );
- }
catch ( ComponentLookupException e )
{
throw new EnforcerRuleException( "Unable to lookup a component " +
e.getLocalizedMessage(), e );
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
URL:
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java?rev=1335761&r1=1335760&r2=1335761&view=diff
==============================================================================
---
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
(original)
+++
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
Tue May 8 20:56:27 2012
@@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.shared.dependency.tree.DependencyNode;
import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
@@ -31,41 +32,27 @@ import org.apache.maven.shared.dependenc
public class DependencyVersionMap
implements DependencyNodeVisitor
{
-
- private boolean demandReleasedVersions = false;
+ private Log log;
+
+ private boolean uniqueVersions;
private Map<String, List<DependencyNode>> idsToNode;
- private List<DependencyNode> snapshots;
-
public DependencyVersionMap( Log log )
{
+ this.log = log;
idsToNode = new HashMap<String, List<DependencyNode>>();
- snapshots = new ArrayList<DependencyNode>();
}
-
- public DependencyVersionMap( boolean demandReleasedVersions, Log log )
+
+ public void setUniqueVersions( boolean uniqueVersions )
{
- this( log );
- this.demandReleasedVersions = demandReleasedVersions;
+ this.uniqueVersions = uniqueVersions;
}
public boolean visit( DependencyNode node )
{
addDependency( node );
- if ( containsConflicts( node ) )
- {
- return false;
- }
- if ( demandReleasedVersions )
- {
- if ( node.getArtifact().isSnapshot() )
- {
- snapshots.add( node );
- return false;
- }
- }
- return true;
+ return !containsConflicts( node );
}
public boolean endVisit( DependencyNode node )
@@ -86,10 +73,6 @@ public class DependencyVersionMap
public void addDependency( DependencyNode node )
{
String key = constructKey( node );
- if ( node.getArtifact().isSnapshot() )
- {
- snapshots.add( node );
- }
List<DependencyNode> nodes = idsToNode.get( key );
if ( nodes == null )
{
@@ -98,10 +81,11 @@ public class DependencyVersionMap
}
nodes.add( node );
}
-
- public List<DependencyNode> getSnapshots()
+
+ private String getVersion( Artifact artifact )
{
- return snapshots;
+ log.info( ArtifactUtils.versionlessKey( artifact ) + " " +
artifact.getVersion() + " " + artifact.getBaseVersion() );
+ return uniqueVersions ? artifact.getVersion() :
artifact.getBaseVersion();
}
private boolean containsConflicts( DependencyNode node )
@@ -121,11 +105,11 @@ public class DependencyVersionMap
{
if ( version == null )
{
- version = node.getArtifact().getVersion();
+ version = getVersion( node.getArtifact() );
}
else
{
- if ( version.compareTo( node.getArtifact().getVersion() ) != 0
)
+ if ( version.compareTo( getVersion( node.getArtifact() ) ) !=
0 )
{
return true;
}