You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2007/08/21 09:12:07 UTC

svn commit: r567988 - in /maven/release/trunk: maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ maven-release-manager/src/main/mdo/ maven-release-mana...

Author: brett
Date: Tue Aug 21 00:12:06 2007
New Revision: 567988

URL: http://svn.apache.org/viewvc?rev=567988&view=rev
Log:
[MRELEASE-124] add an "allowTimestampedSnapshots" parameter
Submitted by: Brian Topping, Tuomas Kiviaho

Added:
    maven/release/trunk/maven-release-manager/src/test/resources/projects/check-dependencies/external-timestamped-snapshot-dependencies/
    maven/release/trunk/maven-release-manager/src/test/resources/projects/check-dependencies/external-timestamped-snapshot-dependencies/pom.xml   (with props)
Modified:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
    maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
    maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java?rev=567988&r1=567987&r2=567988&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java Tue Aug 21 00:12:06 2007
@@ -73,7 +73,7 @@
         mergeInto.setUpdateBranchVersions( toBeMerged.isUpdateBranchVersions() );
         mergeInto.setUpdateWorkingCopyVersions( toBeMerged.isUpdateWorkingCopyVersions() );
         mergeInto.setUpdateVersionsToSnapshot( toBeMerged.isUpdateVersionsToSnapshot() );
-
+        mergeInto.setAllowTimestampedSnapshots( toBeMerged.isAllowTimestampedSnapshots() );
         mergeInto.setAutoVersionSubmodules( toBeMerged.isAutoVersionSubmodules() );
 
         // These must be overridden, as they are not stored

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java?rev=567988&r1=567987&r2=567988&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java Tue Aug 21 00:12:06 2007
@@ -123,7 +123,7 @@
 
         if ( project.getParentArtifact() != null )
         {
-            if ( checkArtifact( project.getParentArtifact(), originalVersions, artifactMap ) )
+            if ( checkArtifact( project.getParentArtifact(), originalVersions, artifactMap, releaseDescriptor ) )
             {
                 snapshotDependencies.add( project.getParentArtifact() );
             }
@@ -137,7 +137,7 @@
             {
                 Artifact artifact = (Artifact) i.next();
 
-                if ( checkArtifact( artifact, originalVersions, artifactMap ) )
+                if ( checkArtifact( artifact, originalVersions, artifactMap, releaseDescriptor ) )
                 {
                     snapshotDependencies.add( artifact );
                 }
@@ -152,7 +152,7 @@
         {
             Artifact artifact = (Artifact) i.next();
 
-            if ( checkArtifact( artifact, originalVersions, artifactMap ) )
+            if ( checkArtifact( artifact, originalVersions, artifactMap, releaseDescriptor ) )
             {
                 boolean addToFailures = true;
 
@@ -202,7 +202,7 @@
         {
             Artifact artifact = (Artifact) i.next();
 
-            if ( checkArtifact( artifact, originalVersions, artifactMap ) )
+            if ( checkArtifact( artifact, originalVersions, artifactMap, releaseDescriptor ) )
             {
                 //snapshotDependencies.add( artifact );
                 snapshotReportDependencies.add( artifact );
@@ -213,7 +213,7 @@
         {
             Artifact artifact = (Artifact) i.next();
 
-            if ( checkArtifact( artifact, originalVersions, artifactMap ) )
+            if ( checkArtifact( artifact, originalVersions, artifactMap, releaseDescriptor ) )
             {
                 snapshotExtensionsDependencies.add( artifact );
             }
@@ -245,7 +245,7 @@
         }
     }
 
-    private static boolean checkArtifact( Artifact artifact, Map originalVersions, Map artifactMapByVersionlessId )
+    private static boolean checkArtifact( Artifact artifact, Map originalVersions, Map artifactMapByVersionlessId, ReleaseDescriptor releaseDescriptor )
     {
         String versionlessId = ArtifactUtils.versionlessKey( artifact );
         Artifact checkArtifact = (Artifact) artifactMapByVersionlessId.get( versionlessId );
@@ -255,17 +255,25 @@
             checkArtifact = artifact;
         }
         
-        return checkArtifact( checkArtifact, originalVersions );
+        return checkArtifact( checkArtifact, originalVersions, releaseDescriptor );
     }
     
-    private static boolean checkArtifact( Artifact artifact, Map originalVersions )
+    private static boolean checkArtifact( Artifact artifact, Map originalVersions, ReleaseDescriptor releaseDescriptor )
     {
         String versionlessArtifactKey = ArtifactUtils.versionlessKey( artifact.getGroupId(), artifact.getArtifactId() );
 
         // We are only looking at dependencies external to the project - ignore anything found in the reactor as
         // it's version will be updated
-        return artifact.isSnapshot() &&
+        boolean result = artifact.isSnapshot() &&
             !artifact.getBaseVersion().equals( originalVersions.get( versionlessArtifactKey ) );
+
+        // If we have a snapshot but allowTimestampedSnapshots is true, accept the artifact if the version
+        // indicates that it is a timestamped snapshot.
+        if ( result && releaseDescriptor.isAllowTimestampedSnapshots() ) {
+            result = artifact.getVersion().contains("SNAPSHOT");
+        }
+
+        return result;
     }
 
     public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )

Modified: maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?rev=567988&r1=567987&r2=567988&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original)
+++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Tue Aug 21 00:12:06 2007
@@ -351,6 +351,16 @@
             Whether to update branch versions to SNAPSHOT.
           </description>
         </field>
+        <field>
+          <name>allowTimestampedSnapshots</name>
+          <version>1.0.0</version>
+          <type>boolean</type>
+          <defaultValue>false</defaultValue>
+          <description>
+            Should timestamped SNAPSHOT dependencies be allowed?  Default is to fail when any SNAPSHOT
+              dependency is found.
+          </description>
+        </field>
 
         <!-- Announcement Information
 

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java?rev=567988&r1=567987&r2=567988&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java Tue Aug 21 00:12:06 2007
@@ -951,6 +951,37 @@
         assertTrue( true );
     }
 
+    public void testAllowTimestampedSnapshots()
+        throws Exception
+    {
+        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+        List reactorProjects = createDescriptorFromProjects( "external-timestamped-snapshot-dependencies" );
+
+        releaseDescriptor.setInteractive( false );
+
+        // confirm POM fails without allowTimestampedSnapshots
+        try
+        {
+            phase.execute( releaseDescriptor, null, reactorProjects );
+
+            fail( "Should have failed execution" );
+        }
+        catch ( ReleaseFailureException e )
+        {
+            assertTrue( true );
+        }
+
+        // check whether flag allows
+        releaseDescriptor.setAllowTimestampedSnapshots(true);
+
+        phase.execute( releaseDescriptor, null, reactorProjects );
+
+        phase.simulate( releaseDescriptor, null, reactorProjects );
+
+        // successful execution is verification enough
+        assertTrue( true );
+    }
+    
     private List createDescriptorFromProjects( String path )
         throws Exception
     {

Added: maven/release/trunk/maven-release-manager/src/test/resources/projects/check-dependencies/external-timestamped-snapshot-dependencies/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/check-dependencies/external-timestamped-snapshot-dependencies/pom.xml?rev=567988&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/check-dependencies/external-timestamped-snapshot-dependencies/pom.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/check-dependencies/external-timestamped-snapshot-dependencies/pom.xml Tue Aug 21 00:12:06 2007
@@ -0,0 +1,30 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>groupId</groupId>
+  <artifactId>artifactId</artifactId>
+  <version>1.0-SNAPSHOT</version>
+
+  <dependencies>
+    <dependency>
+      <groupId>external</groupId>
+      <artifactId>artifactId</artifactId>
+      <version>1.0-20060424.060453-1</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/release/trunk/maven-release-manager/src/test/resources/projects/check-dependencies/external-timestamped-snapshot-dependencies/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java?rev=567988&r1=567987&r2=567988&view=diff
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java (original)
+++ maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java Tue Aug 21 00:12:06 2007
@@ -110,6 +110,13 @@
      */
     private boolean commitByProject;
 
+    /**
+     * Whether to timestamped SNAPSHOT dependencies.  Default is to fail when finding any SNAPSHOT.
+     *
+     * @parameter expression="${ignoreSnapshots}" default-value="false"
+     */
+    private boolean allowTimestampedSnapshots;
+    
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
@@ -123,6 +130,7 @@
         config.setCommitByProject( commitByProject );
         config.setUpdateDependencies( updateDependencies );
         config.setAutoVersionSubmodules( autoVersionSubmodules );
+        config.setAllowTimestampedSnapshots( allowTimestampedSnapshots );
         try
         {
             releaseManager.prepare( config, settings, reactorProjects, resume, dryRun );