You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2006/05/02 22:34:52 UTC

svn commit: r399040 - in /maven/plugins/trunk/maven-assembly-plugin/src/main: java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java mdo/descriptor.mdo

Author: jvanzyl
Date: Tue May  2 13:34:49 2006
New Revision: 399040

URL: http://svn.apache.org/viewcvs?rev=399040&view=rev
Log: (empty)

Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java?rev=399040&r1=399039&r2=399040&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java Tue May  2 13:34:49 2006
@@ -17,12 +17,12 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.plugins.assembly.model.Repository;
+import org.apache.maven.plugins.assembly.model.GroupVersionAlignment;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.DefaultMavenProjectBuilder;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -36,6 +36,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
+import java.util.Set;
+import java.util.HashSet;
 import java.lang.reflect.Field;
 
 /**
@@ -63,14 +65,16 @@
 
     protected MavenProjectBuilder projectBuilder;
 
-    private Map versionAlignmentMap;
+    private Map groupVersionAlignments;
+
+    private Set groupVersionAlignmentExcludes;
 
     public void assemble( File repositoryDirectory,
                           Repository repository,
                           MavenProject project )
         throws RepositoryAssemblyException
     {
-        versionAlignmentMap = createVersionAlignmentMap( repository.getVersionAlignments() );
+        createGroupVersionAlignments( repository.getGroupVersionAlignments() );
 
         ArtifactRepository localRepository = createLocalRepository( repositoryDirectory );
 
@@ -80,11 +84,12 @@
             // to align everything. If I use a filter to change the version on the fly then I get the
             // I get JARs but no POMs, and in some directories POMs with no JARs.
 
+            // I'm not getting runtime dependencies here
+
             ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(),
                                                                                     project.getArtifact(),
                                                                                     project.getRemoteArtifactRepositories(),
-                                                                                    localRepository,
-                                                                                    metadataSource );
+                                                                                    localRepository, metadataSource );
 
             // Now that we have the graph, let's try to align it to versions that we want and remove
             // the repository we previously populated.
@@ -99,9 +104,9 @@
             {
                 Artifact a = (Artifact) i.next();
 
-                String alignedVersion = (String) versionAlignmentMap.get( a.getGroupId() );
+                String alignedVersion = (String) groupVersionAlignments.get( a.getGroupId() );
 
-                if ( alignedVersion != null )
+                if ( alignedVersion != null && !groupVersionAlignmentExcludes.contains( a.getArtifactId() ) )
                 {
                     a.setVersion( alignedVersion );
                 }
@@ -122,7 +127,8 @@
                 {
                     Artifact a = (Artifact) i.next();
 
-                    File metadataFile = new File( a.getFile().getParentFile().getParent(), "maven-metadata-central.xml" );
+                    File metadataFile =
+                        new File( a.getFile().getParentFile().getParent(), "maven-metadata-central.xml" );
 
                     Metadata m = new Metadata();
 
@@ -178,21 +184,23 @@
         }
     }
 
-    protected Map createVersionAlignmentMap( List versionAlignments )
+    protected void createGroupVersionAlignments( List versionAlignments )
     {
-        Map m = new HashMap();
+        groupVersionAlignments = new HashMap();
+
+        groupVersionAlignmentExcludes = new HashSet();
 
         for ( Iterator i = versionAlignments.iterator(); i.hasNext(); )
         {
-            String alignment = (String) i.next();
+            GroupVersionAlignment alignment = (GroupVersionAlignment) i.next();
 
-            // split into groupId and version
-            String[] s = StringUtils.split( alignment, ":" );
+            groupVersionAlignments.put( alignment.getId(), alignment.getVersion() );
 
-            m.put( s[0], s[1] );
+            if ( !alignment.getExcludes().isEmpty() )
+            {
+                groupVersionAlignmentExcludes.addAll( alignment.getExcludes() );
+            }
         }
-
-        return m;
     }
 
     protected static DateFormat getUtcDateFormatter()

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo?rev=399040&r1=399039&r2=399040&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo Tue May  2 13:34:49 2006
@@ -414,9 +414,37 @@
           </description>
         </field>
         <field>
-          <name>versionAlignments</name>
+          <name>groupVersionAlignments</name>
           <version>1.0.0</version>
           <description>Align a group to a version or an individual artifact.</description>
+          <association>
+            <type>GroupVersionAlignment</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>GroupVersionAlignment</name>
+      <version>1.0.0</version>
+      <description>Defines a Maven repository to be included in the assembly.</description>
+      <fields>
+        <field>
+          <name>id</name>
+          <version>1.0.0</version>
+          <type>String</type>
+          <description>The groupId for which you want to align the versions.</description>
+        </field>
+        <field>
+          <name>version</name>
+          <version>1.0.0</version>
+          <type>String</type>
+          <description>The version you want to align this group to.</description>
+        </field>
+        <field>
+          <name>excludes</name>
+          <version>1.0.0</version>
+          <description>Artifact Ids of the artifacts you want excluded from version alignment.</description>
           <association>
             <type>String</type>
             <multiplicity>*</multiplicity>