You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2007/10/18 23:19:17 UTC

svn commit: r586141 - in /maven/ant-tasks/trunk: sample.build.xml src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java src/main/java/org/apache/maven/artifact/ant/DeployTask.java

Author: hboutemy
Date: Thu Oct 18 14:19:16 2007
New Revision: 586141

URL: http://svn.apache.org/viewvc?rev=586141&view=rev
Log:
[MANTTASKS-23] add uniqueVersion="false" to artifact:deploy

Modified:
    maven/ant-tasks/trunk/sample.build.xml
    maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
    maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DeployTask.java

Modified: maven/ant-tasks/trunk/sample.build.xml
URL: http://svn.apache.org/viewvc/maven/ant-tasks/trunk/sample.build.xml?rev=586141&r1=586140&r2=586141&view=diff
==============================================================================
--- maven/ant-tasks/trunk/sample.build.xml (original)
+++ maven/ant-tasks/trunk/sample.build.xml Thu Oct 18 14:19:16 2007
@@ -29,7 +29,8 @@
 
     <artifact:localRepository id="local.repository" path="${basedir}/target/local-repo" layout="default"/>
 
-    <artifact:remoteRepository id="deploy.repository" url="file://localhost/${basedir}/target/deployment-repo" layout="default"/>
+    <property name="deploy.repository.url" value="${basedir}/target/deployment-repo" />
+    <artifact:remoteRepository id="deploy.repository" url="file://localhost/${deploy.repository.url}" layout="default"/>
 
     <artifact:pom file="pom.xml" id="maven.project"/>
   </target>
@@ -163,6 +164,8 @@
 
   <target name="test-deploy" depends="initTaskDefs,installSshProvider">
     <property name="outJar" value="${maven.project.build.directory}/${maven.project.build.finalName}.jar"/>
+    <property name="targetDir" value="${deploy.repository.url}/org/apache/maven/maven-ant-tasks/${pom.xml.project.version}"/>
+    <delete dir="${deploy.repository.url}"/>
 
     <artifact:install file="${outJar}">
       <pom refid="maven.project"/>
@@ -173,6 +176,17 @@
       <remoteSnapshotRepository refid="deploy.repository"/>
       <pom refid="maven.project"/>
     </artifact:deploy>
+    <available file="${targetDir}" property="deploymentArtifactDir"/>
+    <fail unless="deploymentArtifactDir">deployment in ${deploy.repository.url} should have created a directory</fail>
+    <available file="${targetDir}/maven-ant-tasks-${pom.xml.project.version}.jar" property="outJarWithoutUniqueVersion"/>
+    <fail if="outJarWithoutUniqueVersion">uniqueVersion="true" by default: file -SNAPSHOT.jar should not exist</fail>
+
+    <artifact:deploy file="${outJar}" uniqueVersion="false">
+      <remoteSnapshotRepository refid="deploy.repository"/>
+      <pom refid="maven.project"/>
+    </artifact:deploy>
+    <available file="${targetDir}/maven-ant-tasks-${pom.xml.project.version}.jar" property="outJarWithoutUniqueVersion"/>
+    <fail unless="outJarWithoutUniqueVersion">when uniqueVersion="false", file -SNAPSHOT.jar should be created</fail>
 
     <artifact:deploy file="${outJar}">
       <remoteRepository url="scp://localhost/tmp/deployment-repo">

Modified: maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java?rev=586141&r1=586140&r2=586141&view=diff
==============================================================================
--- maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java (original)
+++ maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java Thu Oct 18 14:19:16 2007
@@ -92,15 +92,13 @@
     }
 
     /**
-     * Create a core-Maven ArtifactRepository from a Maven Ant Tasks's RemoteRepository definition.
+     * Create a core-Maven ArtifactRepositoryFactory from a Maven Ant Tasks's RemoteRepository definition,
+     * eventually configured with authentication and proxy information.
      * @param repository the remote repository as defined in Ant
-     * @return the corresponding ArtifactRepository
+     * @return the corresponding ArtifactRepositoryFactory
      */
-    protected ArtifactRepository createRemoteArtifactRepository( RemoteRepository repository )
+    protected ArtifactRepositoryFactory getArtifactRepositoryFactory( RemoteRepository repository )
     {
-        ArtifactRepositoryLayout repositoryLayout =
-            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, repository.getLayout() );
-
         WagonManager manager = (WagonManager) lookup( WagonManager.ROLE );
 
         Authentication authentication = repository.getAuthentication();
@@ -118,13 +116,38 @@
                               proxy.getPassword(), proxy.getNonProxyHosts() );
         }
 
+        return (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+    }
+
+    protected void releaseArtifactRepositoryFactory( ArtifactRepositoryFactory repositoryFactory )
+    {
+        try
+        {
+            getContainer().release( repositoryFactory );
+        }
+        catch ( ComponentLifecycleException e )
+        {
+            // TODO: Warn the user, or not?
+        }
+    }
+
+    /**
+     * Create a core-Maven ArtifactRepository from a Maven Ant Tasks's RemoteRepository definition.
+     * @param repository the remote repository as defined in Ant
+     * @return the corresponding ArtifactRepository
+     */
+    protected ArtifactRepository createRemoteArtifactRepository( RemoteRepository repository )
+    {
+        ArtifactRepositoryLayout repositoryLayout =
+            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, repository.getLayout() );
+
         ArtifactRepositoryFactory repositoryFactory = null;
 
         ArtifactRepository artifactRepository;
 
         try
         {
-            repositoryFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+            repositoryFactory = getArtifactRepositoryFactory( repository );
 
             ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repository.getSnapshots() );
             ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repository.getReleases() );
@@ -134,14 +157,7 @@
         }
         finally
         {
-            try
-            {
-                getContainer().release( repositoryFactory );
-            }
-            catch ( ComponentLifecycleException e )
-            {
-                // TODO: Warn the user, or not?
-            }
+            releaseArtifactRepositoryFactory( repositoryFactory );
         }
 
         return artifactRepository;

Modified: maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DeployTask.java
URL: http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DeployTask.java?rev=586141&r1=586140&r2=586141&view=diff
==============================================================================
--- maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DeployTask.java (original)
+++ maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DeployTask.java Thu Oct 18 14:19:16 2007
@@ -24,6 +24,8 @@
 import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.project.artifact.ProjectArtifactMetadata;
 import org.apache.tools.ant.BuildException;
@@ -43,6 +45,38 @@
 
     private RemoteRepository remoteSnapshotRepository;
 
+    private boolean uniqueVersion = true;
+
+    /**
+     * Create a core-Maven deployment ArtifactRepository from a Maven Ant Tasks's RemoteRepository definition.
+     * @param repository the remote repository as defined in Ant
+     * @return the corresponding ArtifactRepository
+     */
+    protected ArtifactRepository createDeploymentArtifactRepository( RemoteRepository repository )
+    {
+        ArtifactRepositoryLayout repositoryLayout =
+            (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, repository.getLayout() );
+
+        ArtifactRepositoryFactory repositoryFactory = null;
+
+        ArtifactRepository artifactRepository;
+
+        try
+        {
+            repositoryFactory = getArtifactRepositoryFactory( repository );
+
+            artifactRepository = repositoryFactory.createDeploymentArtifactRepository( repository.getId(), repository.getUrl(),
+                                                                             repositoryLayout, uniqueVersion );
+        }
+        finally
+        {
+            releaseArtifactRepositoryFactory( repositoryFactory );
+        }
+
+        return artifactRepository;
+    }
+
+
     protected void doExecute()
     {
         ArtifactRepository localRepo = createLocalArtifactRepository();
@@ -110,6 +144,7 @@
                 {
                     remoteSnapshotRepository = createAntRemoteRepositoryBase( distributionManagement
                         .getSnapshotRepository() );
+                    uniqueVersion = distributionManagement.getSnapshotRepository().isUniqueVersion();
                 }
                 if ( distributionManagement.getRepository() != null )
                 {
@@ -126,11 +161,11 @@
         ArtifactRepository deploymentRepository;
         if ( artifact.isSnapshot() && remoteSnapshotRepository != null )
         {
-            deploymentRepository = createRemoteArtifactRepository( remoteSnapshotRepository );
+            deploymentRepository = createDeploymentArtifactRepository( remoteSnapshotRepository );
         }
         else if ( remoteRepository != null )
         {
-            deploymentRepository = createRemoteArtifactRepository( remoteRepository );
+            deploymentRepository = createDeploymentArtifactRepository( remoteRepository );
         }
         else
         {
@@ -154,5 +189,15 @@
     public void addRemoteRepository( RemoteRepository remoteRepository )
     {
         this.remoteRepository = remoteRepository;
+    }
+
+    public void setUniqueVersion( boolean uniqueVersion )
+    {
+        this.uniqueVersion = uniqueVersion;
+    }
+
+    public boolean getUniqueVersion()
+    {
+        return uniqueVersion;
     }
 }