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/04/12 20:37:59 UTC

svn commit: r393571 - in /maven/plugins/trunk/maven-assembly-plugin/src/main: java/org/apache/maven/plugin/assembly/ java/org/apache/maven/plugin/assembly/repository/ mdo/

Author: jvanzyl
Date: Wed Apr 12 11:37:57 2006
New Revision: 393571

URL: http://svn.apache.org/viewcvs?rev=393571&view=rev
Log:
[MASSEMBLY-80] provide the option to write out repository metadata

Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
    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/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.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/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java?rev=393571&r1=393570&r2=393571&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java Wed Apr 12 11:37:57 2006
@@ -436,7 +436,6 @@
                 filter.add( new IncludesArtifactFilter( repository.getIncludes() ) );
             }
 
-
             // ----------------------------------------------------------------------------
             // Excludes
             //
@@ -468,7 +467,10 @@
                 repositoryDirectory.mkdirs();
             }
 
-            repositoryAssembler.assemble( repositoryDirectory, artifacts, project.getRemoteArtifactRepositories() );
+            repositoryAssembler.assemble( repositoryDirectory,
+                                          artifacts,
+                                          project.getRemoteArtifactRepositories(),
+                                          repository.isIncludeMetadata() );
 
             if ( includeBaseDirectory )
             {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java?rev=393571&r1=393570&r2=393571&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java Wed Apr 12 11:37:57 2006
@@ -151,7 +151,7 @@
         {
             Artifact a = (Artifact) i.next();
 
-            if ( project.getArtifactId().equals( a.getArtifactId() ))
+            if ( project.getGroupId().equals( a.getGroupId() ) && project.getArtifactId().equals( a.getArtifactId() ))
             {
                 continue;
             }

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=393571&r1=393570&r2=393571&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 Wed Apr 12 11:37:57 2006
@@ -6,15 +6,25 @@
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.Iterator;
 import java.util.List;
+import java.util.TimeZone;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.text.DateFormat;
 
 /**
  * @author Jason van Zyl
@@ -23,6 +33,10 @@
     extends AbstractLogEnabled
     implements RepositoryAssembler
 {
+    protected static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone( "UTC" );
+
+    protected static final String UTC_TIMESTAMP_PATTERN = "yyyyMMddHHmmss";
+
     protected ArtifactFactory artifactFactory;
 
     protected ArtifactResolver artifactResolver;
@@ -31,7 +45,7 @@
 
     protected ArtifactRepositoryFactory artifactRepositoryFactory;
 
-    public void assemble( File outputDirectory, List artifacts, List remoteRepositories )
+    public void assemble( File outputDirectory, List artifacts, List remoteRepositories, boolean includeMetadata )
         throws RepositoryAssemblyException
     {
         ArtifactRepository localRepository = createLocalRepository( outputDirectory );
@@ -44,8 +58,32 @@
 
             try
             {
-                // Not sure if i want to do this transitively
                 artifactResolver.resolveAlways( a, remoteRepositories, localRepository );
+
+                if ( includeMetadata )
+                {
+                    File metadataFile = new File( a.getFile().getParent(), "maven-metadata.xml" );
+
+                    Metadata m = new Metadata();
+
+                    m.setGroupId( a.getGroupId() );
+
+                    m.setArtifactId( a.getArtifactId() );
+
+                    Versioning v = new Versioning();
+
+                    v.setRelease( a.getVersion() );
+
+                    v.addVersion( a.getVersion() );
+
+                    m.setVersioning( v );
+
+                    v.setLastUpdated( getUtcDateFormatter().format( new Date() ));
+
+                    MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer();
+
+                    metadataWriter.write( new FileWriter( metadataFile ), m );
+                }
             }
             catch ( ArtifactResolutionException e )
             {
@@ -55,8 +93,20 @@
             {
                 throw new RepositoryAssemblyException( "Cannot find artifact: " + a, e );
             }
+            catch ( IOException e )
+            {
+                throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
+            }
         }
     }
+
+    public static DateFormat getUtcDateFormatter()
+    {
+        DateFormat utcDateFormatter = new SimpleDateFormat( UTC_TIMESTAMP_PATTERN );
+        utcDateFormatter.setTimeZone( UTC_TIME_ZONE );
+        return utcDateFormatter;
+    }
+
 
     public ArtifactRepository createLocalRepository( File directory )
     {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java?rev=393571&r1=393570&r2=393571&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java Wed Apr 12 11:37:57 2006
@@ -10,6 +10,6 @@
 {
     String ROLE = RepositoryAssembler.class.getName();
 
-    public void assemble( File outputDirectory, List artifacts, List remoteRepositories )
+    public void assemble( File outputDirectory, List artifacts, List remoteRepositories, boolean includeMetadata )
         throws RepositoryAssemblyException;
 }

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=393571&r1=393570&r2=393571&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 Wed Apr 12 11:37:57 2006
@@ -401,6 +401,18 @@
       <version>1.0.0</version>
       <superClass>SetBase</superClass>
       <description>Defines a Maven repository to be included in the assembly.</description>
+      <fields>
+        <field>
+          <name>includeMetadata</name>
+          <type>boolean</type>
+          <defaultValue>false</defaultValue>
+          <description>
+            If set to true, this property will trigger the creation of repository
+            metadata which will allow the repository to be used as a functional remote
+            repository.
+          </description>
+        </field>
+      </fields>
     </class>
   </classes>
 </model>