You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2014/07/25 21:11:42 UTC
svn commit: r1613503 -
/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
Author: khmarbaise
Date: Fri Jul 25 19:11:42 2014
New Revision: 1613503
URL: http://svn.apache.org/r1613503
Log:
[MASSEMBLY-690]
- Added a trivial check of module versions and only
if the versions are inconsitent produce a warning.
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?rev=1613503&r1=1613502&r2=1613503&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java Fri Jul 25 19:11:42 2014
@@ -70,6 +70,9 @@ public class ModuleSetAssemblyPhase
implements AssemblyArchiverPhase
{
+ //TODO: Remove if using something like commons-lang instead.
+ public static final String LINE_SEPARATOR = System.getProperty("line.separator");
+
@Requirement
private MavenProjectBuilder projectBuilder;
@@ -222,9 +225,21 @@ public class ModuleSetAssemblyPhase
ds.setUseProjectArtifact(false);
}
- // FIXME: This will produce unpredictable results when module dependencies have a version conflict.
- getLogger().warn( "NOTE: Currently, inclusion of module dependencies may produce unpredictable "
- + "results if a version conflict occurs." );
+ //TODO: The following should be moved into a shared component, cause this
+ //test is the same as in maven-enforce rules ReactorModuleConvergence.
+ List<MavenProject> validateModuleVersions = validateModuleVersions( moduleProjects );
+ if (!validateModuleVersions.isEmpty()) {
+ getLogger().warn( "The current modules seemed to be having different versions." );
+
+ StringBuilder sb = new StringBuilder().append( LINE_SEPARATOR );
+ for ( MavenProject mavenProject : validateModuleVersions )
+ {
+ sb.append( " --> " );
+ sb.append( mavenProject.getId() );
+ sb.append( LINE_SEPARATOR );
+ }
+ getLogger().warn( sb.toString() );
+ }
for (final MavenProject moduleProject : moduleProjects) {
getLogger().debug("Processing binary dependencies for module project: " + moduleProject.getId());
@@ -243,6 +258,24 @@ public class ModuleSetAssemblyPhase
}
}
+ private List<MavenProject> validateModuleVersions (Set<MavenProject> moduleProjects) {
+ List<MavenProject> result = new ArrayList<MavenProject>();
+
+ if (moduleProjects != null && !moduleProjects.isEmpty()) {
+ String version = moduleProjects.iterator().next().getVersion();
+ getLogger().debug( "First version:" + version );
+ for ( MavenProject mavenProject : moduleProjects )
+ {
+ getLogger().debug( " -> checking " + mavenProject.getId() );
+ if ( !version.equals( mavenProject.getVersion() ) )
+ {
+ result.add( mavenProject );
+ }
+ }
+ }
+ return result;
+ }
+
public static List<DependencySet> getDependencySets( final ModuleBinaries binaries )
{
List<DependencySet> depSets = binaries.getDependencySets();