[maven-release-plugin] copy for tag maven-release-2.5.2
git-svn-id: https://svn.apache.org/repos/asf/maven/release/tags/maven-release-2.5.2@1674527 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maven-release-api/pom.xml b/maven-release-api/pom.xml
index c631722..a59ede3 100644
--- a/maven-release-api/pom.xml
+++ b/maven-release-api/pom.xml
@@ -1,55 +1,55 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.maven.release</groupId>
- <artifactId>maven-release</artifactId>
- <version>2.5.2</version>
- </parent>
-
- <artifactId>maven-release-api</artifactId>
-
- <name>Maven Release APIs</name>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-repository-metadata</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-artifact</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.aether</groupId>
- <artifactId>aether-util</artifactId>
- <version>1.0.0.v20140518</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.maven.release</groupId>
+ <artifactId>maven-release</artifactId>
+ <version>2.5.2</version>
+ </parent>
+
+ <artifactId>maven-release-api</artifactId>
+
+ <name>Maven Release APIs</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-metadata</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.aether</groupId>
+ <artifactId>aether-util</artifactId>
+ <version>1.0.0.v20140518</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
</project>
\ No newline at end of file
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/PolicyException.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/PolicyException.java
index d3338d4..2380602 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/PolicyException.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/PolicyException.java
@@ -19,6 +19,9 @@
* under the License.
*/
+/**
+ *
+ */
public class PolicyException
extends Exception
{
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java
index be25104..a7dbd66 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java
@@ -22,10 +22,14 @@
import org.apache.maven.shared.release.policy.PolicyException;
import org.apache.maven.shared.release.versions.VersionParseException;
+/**
+ *
+ */
public interface VersionPolicy
{
+ VersionPolicyResult getReleaseVersion( VersionPolicyRequest request )
+ throws PolicyException, VersionParseException;
- public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request ) throws PolicyException, VersionParseException;
-
- public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request ) throws PolicyException, VersionParseException;
+ VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request )
+ throws PolicyException, VersionParseException;
}
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java
index 6f4d27d..ab18feb 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java
@@ -1,7 +1,5 @@
package org.apache.maven.shared.release.policy.version;
-import org.apache.maven.artifact.repository.metadata.Metadata;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -21,6 +19,11 @@
* under the License.
*/
+import org.apache.maven.artifact.repository.metadata.Metadata;
+
+/**
+ *
+ */
public class VersionPolicyRequest
{
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyResult.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyResult.java
index 7d3fd72..309ff5e 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyResult.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyResult.java
@@ -19,6 +19,9 @@
* under the License.
*/
+/**
+ *
+ */
public class VersionPolicyResult
{
private String version;
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/Version.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/Version.java
index 8f0a81a..b41593f 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/Version.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/Version.java
@@ -25,9 +25,11 @@
import java.util.regex.Pattern;
import org.apache.maven.artifact.ArtifactUtils;
-import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.codehaus.plexus.util.StringUtils;
+/**
+ *
+ */
public class Version
implements Comparable<Version>
{
@@ -82,15 +84,8 @@
* cmaki 02242009 FIX for non-digit release numbers, e.g. trunk-SNAPSHOT or just SNAPSHOT This alternate pattern
* supports version numbers like: trunk-SNAPSHOT branchName-SNAPSHOT SNAPSHOT
*/
- public static final Pattern ALTERNATE_PATTERN = Pattern.compile( "^(SNAPSHOT|[a-zA-Z]+[_-]SNAPSHOT)" // for SNAPSHOT
- // releases
- // only
- // (possible
- // versions
- // include:
- // trunk-SNAPSHOT
- // or SNAPSHOT)
- );
+ // for SNAPSHOT releases only (possible versions include: trunk-SNAPSHOT or SNAPSHOT)
+ public static final Pattern ALTERNATE_PATTERN = Pattern.compile( "^(SNAPSHOT|[a-zA-Z]+[_-]SNAPSHOT)" );
public Version( String version )
throws VersionParseException
@@ -253,7 +248,7 @@
/**
* @throws VersionComparisonConflictException if {@link org.eclipse.aether.version.Version} and
- * {@link ArtifactVersion} give different results
+ * {@link org.apache.maven.artifact.versioning.ArtifactVersion ArtifactVersion} give different results
*/
public int compareTo( Version other )
throws VersionComparisonConflictException
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionComparisonConflictException.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionComparisonConflictException.java
index 4c80e52..12fad4f 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionComparisonConflictException.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionComparisonConflictException.java
@@ -19,6 +19,9 @@
* under the License.
*/
+/**
+ *
+ */
public class VersionComparisonConflictException
extends RuntimeException
{
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
index 4bda604..eb2a030 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
@@ -19,6 +19,9 @@
* under the License.
*/
+/**
+ *
+ */
public class VersionParseException
extends Exception
{
diff --git a/maven-release-manager/pom.xml b/maven-release-manager/pom.xml
index 9d6a84a..0d44d48 100644
--- a/maven-release-manager/pom.xml
+++ b/maven-release-manager/pom.xml
@@ -101,7 +101,7 @@
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-invoker</artifactId>
- <version>2.1</version>
+ <version>2.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
@@ -119,7 +119,11 @@
</exclusion>
</exclusions>
</dependency>
-
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.2</version>
+ </dependency>
<!-- scm dependencies -->
<dependency>
<groupId>org.apache.maven.scm</groupId>
@@ -213,6 +217,7 @@
<argLine>-Xmx256m</argLine>
<systemPropertyVariables>
<settings.security>${project.build.testOutputDirectory}/settings-security.xml</settings.security>
+ <injectedMavenHome>${maven.home}</injectedMavenHome>
</systemPropertyVariables>
</configuration>
</plugin>
diff --git a/maven-release-manager/src/main/components-fragment.xml b/maven-release-manager/src/main/components-fragment.xml
index 368ae03..f1cb219 100644
--- a/maven-release-manager/src/main/components-fragment.xml
+++ b/maven-release-manager/src/main/components-fragment.xml
@@ -267,6 +267,7 @@
<implementation>org.apache.maven.shared.release.phase.CheckPomPhase</implementation>
<configuration>
<scmRequired>true</scmRequired>
+ <snapshotsRequired>true</snapshotsRequired>
</configuration>
<requirements>
<requirement>
@@ -280,6 +281,7 @@
<implementation>org.apache.maven.shared.release.phase.CheckPomPhase</implementation>
<configuration>
<scmRequired>false</scmRequired>
+ <snapshotsRequired>false</snapshotsRequired>
</configuration>
<requirements>
<requirement>
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
index a2d5292..3c035dc 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
@@ -540,7 +540,7 @@
updateListener( updateVersionsRequest.getReleaseManagerListener(), "updateVersions", GOAL_START );
ReleaseDescriptor releaseDescriptor = loadReleaseDescriptor( updateVersionsRequest.getReleaseDescriptor(),
- updateVersionsRequest.getReleaseManagerListener() );
+ updateVersionsRequest.getReleaseManagerListener() );
for ( String name : updateVersionsPhases )
{
@@ -747,7 +747,8 @@
ReleaseManagerListener listener )
throws ReleaseExecutionException, ReleaseFailureException
{
- perform( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, listener );
+ perform( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects,
+ listener );
}
/** {@inheritDoc} */
@@ -803,7 +804,8 @@
ReleaseManagerListener listener )
throws ReleaseExecutionException, ReleaseFailureException
{
- rollback( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, listener );
+ rollback( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects,
+ listener );
}
/** {@inheritDoc} */
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
index 4f35f77..e9bc078 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
@@ -91,7 +91,8 @@
* @throws ReleaseExecutionException if there is a problem performing the release
* @throws ReleaseFailureException if there is a problem performing the release
*
- * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean)} instead.
+ * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean)}
+ * instead.
*/
void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
boolean resume, boolean dryRun )
@@ -135,7 +136,8 @@
* @throws ReleaseExecutionException if there is a problem performing the release
* @throws ReleaseFailureException if there is a problem performing the release
*
- * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean, ReleaseManagerListener)} instead.
+ * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean,
+ * ReleaseManagerListener)} instead.
*/
void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
boolean resume, boolean dryRun, ReleaseManagerListener listener )
@@ -146,7 +148,8 @@
ReleaseManagerListener listener );
/**
- * @deprecated Use {@link ReleaseManager#prepareWithResult(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean, ReleaseManagerListener)} instead.
+ * @deprecated Use {@link ReleaseManager#prepareWithResult(ReleaseDescriptor, ReleaseEnvironment, List, boolean,
+ * boolean, ReleaseManagerListener)} instead.
*/
ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
@@ -203,7 +206,8 @@
* @throws ReleaseExecutionException if there is a problem performing the release
* @throws ReleaseFailureException if there is a problem performing the release
*
- * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List, ReleaseManagerListener)} instead.
+ * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List,
+ * ReleaseManagerListener)} instead.
*/
void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
ReleaseManagerListener listener )
@@ -213,7 +217,8 @@
List<MavenProject> reactorProjects, ReleaseManagerListener listener );
/**
- * @deprecated Use {@link ReleaseManager#performWithResult(ReleaseDescriptor, ReleaseEnvironment, List, ReleaseManagerListener)} instead.
+ * @deprecated Use {@link ReleaseManager#performWithResult(ReleaseDescriptor, ReleaseEnvironment, List,
+ * ReleaseManagerListener)} instead.
*/
ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
List<MavenProject> reactorProjects, ReleaseManagerListener listener );
@@ -265,7 +270,8 @@
* @param releaseDescriptor the configuration to use for release
* @param reactorProjects the reactor projects
*/
- void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener, List<MavenProject> reactorProjects );
+ void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener,
+ List<MavenProject> reactorProjects );
/**
* Clean a release.
@@ -326,7 +332,8 @@
* @throws ReleaseExecutionException if there is a problem during release rollback
* @throws ReleaseFailureException if there is a problem during release rollback
*
- * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List, ReleaseManagerListener)} instead.
+ * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List,
+ * ReleaseManagerListener)} instead.
*/
void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
ReleaseManagerListener listener )
@@ -399,7 +406,8 @@
* @throws ReleaseExecutionException if there is a problem during release branch
* @throws ReleaseFailureException if there is a problem during release branch
*
- * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean, ReleaseManagerListener)} instead.
+ * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean,
+ * ReleaseManagerListener)} instead.
*/
void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
boolean dryRun, ReleaseManagerListener listener )
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
index b4685ef..02890d7 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
@@ -342,7 +342,8 @@
}
// From org.apache.maven.cli.MavenCli.encryption(CliRequest)
- private String encryptAndDecorate( String passwd ) throws IllegalStateException, SecDispatcherException, PlexusCipherException
+ private String encryptAndDecorate( String passwd )
+ throws IllegalStateException, SecDispatcherException, PlexusCipherException
{
String configurationFile = secDispatcher.getConfigurationFile();
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
index 0c9621a..522fef4 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
@@ -56,7 +56,8 @@
mergeInto.setScmSourceUrl( mergeOverride( mergeInto.getScmSourceUrl(), toBeMerged.getScmSourceUrl() ) );
mergeInto.setScmCommentPrefix(
mergeOverride( mergeInto.getScmCommentPrefix(), toBeMerged.getScmCommentPrefix() ) );
- mergeInto.setScmReleaseLabel( mergeOverride( mergeInto.getScmReleaseLabel(), toBeMerged.getScmReleaseLabel() ) );
+ mergeInto.setScmReleaseLabel( mergeOverride( mergeInto.getScmReleaseLabel(),
+ toBeMerged.getScmReleaseLabel() ) );
mergeInto.setScmTagBase( mergeOverride( mergeInto.getScmTagBase(), toBeMerged.getScmTagBase() ) );
mergeInto.setScmTagNameFormat(
mergeOverride( mergeInto.getScmTagNameFormat(), toBeMerged.getScmTagNameFormat() ) );
@@ -251,11 +252,16 @@
endIndex = propertyName.lastIndexOf( ".development" );
versionType = ReleaseDescriptor.DEVELOPMENT_KEY;
}
- else
+ else if ( propertyName.indexOf( ".release" ) != -1 )
{
endIndex = propertyName.lastIndexOf( ".release" );
versionType = ReleaseDescriptor.RELEASE_KEY;
}
+ else
+ {
+ // MRELEASE-834, probably a maven-dependency-plugin property
+ continue;
+ }
artifactVersionlessKey = propertyName.substring( startIndex, endIndex );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/DefaultReleaseEnvironment.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/DefaultReleaseEnvironment.java
index 4fd07f2..e0f67f4 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/DefaultReleaseEnvironment.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/DefaultReleaseEnvironment.java
@@ -24,6 +24,9 @@
import org.apache.maven.settings.Settings;
+/**
+ *
+ */
public class DefaultReleaseEnvironment
implements ReleaseEnvironment
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/ReleaseEnvironment.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/ReleaseEnvironment.java
index 42aacec..1d5a4ea 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/ReleaseEnvironment.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/env/ReleaseEnvironment.java
@@ -24,6 +24,9 @@
import org.apache.maven.settings.Settings;
+/**
+ *
+ */
public interface ReleaseEnvironment
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/AbstractMavenExecutor.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/AbstractMavenExecutor.java
index e1b5a4f..63298b8 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/AbstractMavenExecutor.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/AbstractMavenExecutor.java
@@ -42,6 +42,9 @@
import org.sonatype.plexus.components.sec.dispatcher.SecUtil;
import org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity;
+/**
+ *
+ */
public abstract class AbstractMavenExecutor
implements MavenExecutor, LogEnabled
{
@@ -70,7 +73,8 @@
String pomFileName, ReleaseResult result )
throws MavenExecutorException
{
- executeGoals( workingDirectory, goals, new DefaultReleaseEnvironment(), interactive, additionalArguments, pomFileName, result );
+ executeGoals( workingDirectory, goals, new DefaultReleaseEnvironment(), interactive, additionalArguments,
+ pomFileName, result );
}
/** {@inheritDoc} */
@@ -78,7 +82,8 @@
ReleaseResult result )
throws MavenExecutorException
{
- executeGoals( workingDirectory, goals, new DefaultReleaseEnvironment(), interactive, additionalArguments, result );
+ executeGoals( workingDirectory, goals, new DefaultReleaseEnvironment(), interactive, additionalArguments,
+ result );
}
/** {@inheritDoc} */
@@ -91,7 +96,8 @@
/** {@inheritDoc} */
public void executeGoals( File workingDirectory, String goals, ReleaseEnvironment releaseEnvironment,
- boolean interactive, String additionalArguments, String pomFileName, ReleaseResult result )
+ boolean interactive, String additionalArguments, String pomFileName,
+ ReleaseResult result )
throws MavenExecutorException
{
List<String> goalsList = new ArrayList<String>();
@@ -100,21 +106,20 @@
// accept both space and comma, so the old way still work
// also accept line separators, so that goal lists can be spread
// across multiple lines in the POM.
- String[] tokens = StringUtils.split( goals, ", \n\r\t" );
-
- for ( int i = 0; i < tokens.length; ++i )
+ for ( String token : StringUtils.split( goals, ", \n\r\t" ) )
{
- goalsList.add( tokens[i] );
+ goalsList.add( token );
}
}
- executeGoals( workingDirectory, goalsList, releaseEnvironment, interactive, additionalArguments, pomFileName, result );
+ executeGoals( workingDirectory, goalsList, releaseEnvironment, interactive, additionalArguments, pomFileName,
+ result );
}
- protected abstract void executeGoals( File workingDirectory, List<String> goals, ReleaseEnvironment releaseEnvironment,
- boolean interactive, String additionalArguments, String pomFileName, ReleaseResult result )
+ protected abstract void executeGoals( File workingDirectory, List<String> goals,
+ ReleaseEnvironment releaseEnvironment, boolean interactive,
+ String additionalArguments, String pomFileName, ReleaseResult result )
throws MavenExecutorException;
-
protected final Logger getLogger()
{
return logger;
@@ -204,7 +209,8 @@
}
// From org.apache.maven.cli.MavenCli.encryption(CliRequest)
- private final String encryptAndDecorate( String passwd ) throws IllegalStateException, SecDispatcherException, PlexusCipherException
+ private String encryptAndDecorate( String passwd )
+ throws IllegalStateException, SecDispatcherException, PlexusCipherException
{
String configurationFile = secDispatcher.getConfigurationFile();
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java
index 432df76..beab1ff 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java
@@ -101,6 +101,9 @@
private static final String THREADS = "T";
+ private static final String BATCH_MODE = "B";
+
+ public static final char ALTERNATE_USER_TOOLCHAINS = 't';
static
{
@@ -172,6 +175,12 @@
OPTIONS.addOption( OptionBuilder.withLongOpt( "threads" ).withDescription(
"Thread count, for instance 2.0C where C is core multiplied" ).hasArg().create( THREADS ) );
+
+ OPTIONS.addOption( OptionBuilder.withLongOpt( "batch-mode" ).withDescription(
+ "Run in non-interactive (batch) mode" ).create( BATCH_MODE ) );
+
+ OPTIONS.addOption( OptionBuilder.withLongOpt( "toolchains" ).withDescription(
+ "Alternate path for the user toolchains file" ).hasArg().create( ALTERNATE_USER_TOOLCHAINS ) );
}
// TODO: Configuring an invocation request from a command line could as well be part of the Invoker API
@@ -314,6 +323,17 @@
{
req.setThreads( cli.getOptionValue( THREADS ) );
}
+
+ if ( cli.hasOption( BATCH_MODE ) )
+ {
+ req.setInteractive( false );
+ }
+
+ if ( cli.hasOption( ALTERNATE_USER_TOOLCHAINS ) )
+ {
+ req.setToolchainsFile( new File( cli.getOptionValue( ALTERNATE_USER_TOOLCHAINS ) ) );
+ }
+
}
catch ( Exception e )
{
@@ -341,21 +361,21 @@
String mavenHome = System.getProperty( "maven.home" );
if ( mavenHome == null )
{
- mavenHome = System.getenv("MAVEN_HOME");
+ mavenHome = System.getenv( "MAVEN_HOME" );
}
if ( mavenHome == null )
{
- mavenHome = System.getenv("M2_HOME");
+ mavenHome = System.getenv( "M2_HOME" );
}
mavenPath = mavenHome == null ? null : new File( mavenHome );
}
Invoker invoker =
- new DefaultInvoker().setMavenHome( mavenPath ).setLogger( bridge ).setOutputHandler(
- handler ).setErrorHandler( handler );
+ new DefaultInvoker().setMavenHome( mavenPath ).setLogger( bridge )
+ .setOutputHandler( handler ).setErrorHandler( handler );
InvocationRequest req =
- new DefaultInvocationRequest().setDebug( getLogger().isDebugEnabled() ).setBaseDirectory(
- workingDirectory ).setInteractive( interactive );
+ new DefaultInvocationRequest().setDebug( getLogger().isDebugEnabled() )
+ .setBaseDirectory( workingDirectory ).setInteractive( interactive );
if ( pomFileName != null )
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/MavenExecutor.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/MavenExecutor.java
index 522bad1..f2e6470 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/MavenExecutor.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/MavenExecutor.java
@@ -78,7 +78,8 @@
* @param result holds all results of the execution
* @throws MavenExecutorException if an error occurred executing Maven
*
- * @deprecated Use {@link MavenExecutor#executeGoals(File, String, ReleaseEnvironment, boolean, String, String, ReleaseResult)} instead
+ * @deprecated Use {@link MavenExecutor#executeGoals(File, String, ReleaseEnvironment, boolean, String, String,
+ * ReleaseResult)} instead
*/
void executeGoals( File workingDirectory, String goals, boolean interactive, String additionalArguments,
String pomFileName, ReleaseResult result )
@@ -94,7 +95,8 @@
* @param result holds all results of the execution
* @throws MavenExecutorException if an error occurred executing Maven
*
- * @deprecated Use {@link MavenExecutor#executeGoals(File, String, ReleaseEnvironment, boolean, String, ReleaseResult)} instead
+ * @deprecated Use {@link MavenExecutor#executeGoals(File, String, ReleaseEnvironment, boolean, String,
+ * ReleaseResult)} instead
*/
void executeGoals( File workingDirectory, String goals, boolean interactive, String additionalArguments,
ReleaseResult result )
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/RawStreamPumper.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/RawStreamPumper.java
index 9ef6804..63c645d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/RawStreamPumper.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/RawStreamPumper.java
@@ -23,6 +23,9 @@
import java.io.InputStream;
import java.io.OutputStream;
+/**
+ *
+ */
public class RawStreamPumper
extends Thread
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/TeeOutputStream.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/TeeOutputStream.java
index 8ace507..bb75a51 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/TeeOutputStream.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/TeeOutputStream.java
@@ -24,6 +24,9 @@
import java.io.IOException;
import java.io.OutputStream;
+/**
+ *
+ */
public class TeeOutputStream
extends FilterOutputStream
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePomsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePomsPhase.java
index b1d7c8d..f7dbf54 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePomsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePomsPhase.java
@@ -44,12 +44,14 @@
*/
private ScmRepositoryConfigurator scmRepositoryConfigurator;
- protected ScmRepository getScmRepository( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment )
+ protected ScmRepository getScmRepository( ReleaseDescriptor releaseDescriptor,
+ ReleaseEnvironment releaseEnvironment )
throws ReleaseFailureException, ReleaseExecutionException
{
try
{
- return scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );
+ return scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor,
+ releaseEnvironment.getSettings() );
}
catch ( ScmRepositoryException exception )
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
index 903b159..f4d19c9 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
@@ -174,6 +174,7 @@
* fail. So let's try harder. Maybe some day, when JDOM offers a StaxBuilder and this builder employes
* XMLInputFactory2.P_REPORT_PROLOG_WHITESPACE, this whole mess can be avoided.
*/
+ // CHECKSTYLE_OFF: LocalFinalVariableName
final String SPACE = "\\s++";
final String XML = "<\\?(?:(?:[^\"'>]++)|(?:\"[^\"]*+\")|(?:'[^\']*+'))*+>";
final String INTSUB = "\\[(?:(?:[^\"'\\]]++)|(?:\"[^\"]*+\")|(?:'[^\']*+'))*+\\]";
@@ -186,6 +187,7 @@
"(?:(?:" + SPACE + ")|(?:" + XML + ")|(?:" + DOCTYPE + ")|(?:" + COMMENT + ")|(?:" + PI + "))*";
final String OUTRO = "(?:(?:" + SPACE + ")|(?:" + COMMENT + ")|(?:" + PI + "))*";
final String POM = "(?s)(" + INTRO + ")(.*?)(" + OUTRO + ")";
+ // CHECKSTYLE_ON: LocalFinalVariableName
Matcher matcher = Pattern.compile( POM ).matcher( content );
if ( matcher.matches() )
@@ -258,8 +260,8 @@
}
private void transformDocument( MavenProject project, Element rootElement, ReleaseDescriptor releaseDescriptor,
- List<MavenProject> reactorProjects, ScmRepository scmRepository, ReleaseResult result,
- boolean simulate )
+ List<MavenProject> reactorProjects, ScmRepository scmRepository,
+ ReleaseResult result, boolean simulate )
throws ReleaseExecutionException, ReleaseFailureException
{
Namespace namespace = rootElement.getNamespace();
@@ -394,8 +396,8 @@
}
}
- private void rewriteVersion( Element rootElement, Namespace namespace, Map<String, String> mappedVersions, String projectId,
- MavenProject project, String parentVersion )
+ private void rewriteVersion( Element rootElement, Namespace namespace, Map<String, String> mappedVersions,
+ String projectId, MavenProject project, String parentVersion )
throws ReleaseFailureException
{
Element versionElement = rootElement.getChild( "version", namespace );
@@ -425,8 +427,10 @@
}
}
- private String rewriteParent( MavenProject project, Element rootElement, Namespace namespace, Map<String, String> mappedVersions,
- Map<String, Map<String, String>> resolvedSnapshotDependencies, Map<String, String> originalVersions )
+ private String rewriteParent( MavenProject project, Element rootElement, Namespace namespace,
+ Map<String, String> mappedVersions,
+ Map<String, Map<String, String>> resolvedSnapshotDependencies,
+ Map<String, String> originalVersions )
throws ReleaseFailureException
{
String parentVersion = null;
@@ -458,9 +462,9 @@
}
private void rewriteArtifactVersions( Collection<Element> elements, Map<String, String> mappedVersions,
- Map<String, Map<String, String>> resolvedSnapshotDependencies, Map<String, String> originalVersions,
- Model projectModel, Element properties, ReleaseResult result,
- ReleaseDescriptor releaseDescriptor )
+ Map<String, Map<String, String>> resolvedSnapshotDependencies,
+ Map<String, String> originalVersions, Model projectModel, Element properties,
+ ReleaseResult result, ReleaseDescriptor releaseDescriptor )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( elements == null )
@@ -565,7 +569,8 @@
else if ( !mappedVersion.equals( rawVersion ) )
{
if ( mappedVersion.matches( "\\$\\{project.+\\}" )
- || mappedVersion.matches( "\\$\\{pom.+\\}" ) || "${version}".equals( mappedVersion ) )
+ || mappedVersion.matches( "\\$\\{pom.+\\}" )
+ || "${version}".equals( mappedVersion ) )
{
logInfo( result, " Ignoring artifact version update for expression "
+ mappedVersion );
@@ -735,9 +740,10 @@
Map<String, Map<String, String>> resolvedSnapshots );
protected abstract Map<String, String> getOriginalVersionMap( ReleaseDescriptor releaseDescriptor,
- List<MavenProject> reactorProjects, boolean simulate );
+ List<MavenProject> reactorProjects,
+ boolean simulate );
- protected abstract Map<String,String> getNextVersionMap( ReleaseDescriptor releaseDescriptor );
+ protected abstract Map<String, String> getNextVersionMap( ReleaseDescriptor releaseDescriptor );
protected abstract void transformScm( MavenProject project, Element rootElement, Namespace namespace,
ReleaseDescriptor releaseDescriptor, String projectId,
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
index 78f6605..7a55bf1 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
@@ -48,7 +48,8 @@
private Map<String, MavenExecutor> mavenExecutors;
/**
- * @deprecated Use {@link AbstractRunGoalsPhase#execute(ReleaseDescriptor, ReleaseEnvironment, File, String)} instead.
+ * @deprecated Use {@link AbstractRunGoalsPhase#execute(ReleaseDescriptor, ReleaseEnvironment, File, String)}
+ * instead.
*/
public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, File workingDirectory,
String additionalArguments )
@@ -78,9 +79,10 @@
"Cannot find Maven executor with id: " + releaseEnvironment.getMavenExecutorId() );
}
- mavenExecutor.executeGoals( determineWorkingDirectory( workingDirectory,
- releaseDescriptor.getScmRelativePathProjectDirectory() ),
- goals, releaseEnvironment, releaseDescriptor.isInteractive(),
+ File wd =
+ determineWorkingDirectory( workingDirectory,
+ releaseDescriptor.getScmRelativePathProjectDirectory() );
+ mavenExecutor.executeGoals( wd, goals, releaseEnvironment, releaseDescriptor.isInteractive(),
additionalArguments, releaseDescriptor.getPomFileName(), result );
}
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
index 65800ae..990060d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
@@ -170,8 +170,8 @@
}
}
- protected void simulateCheckins( ReleaseDescriptor releaseDescriptor, List<MavenProject> reactorProjects, ReleaseResult result,
- String message )
+ protected void simulateCheckins( ReleaseDescriptor releaseDescriptor, List<MavenProject> reactorProjects,
+ ReleaseResult result, String message )
{
Collection<File> pomFiles = createPomFiles( releaseDescriptor, reactorProjects );
logInfo( result, "Full run would be commit " + pomFiles.size() + " files with message: '" + message + "'" );
@@ -206,7 +206,8 @@
return pomFiles;
}
- protected static List<File> createPomFiles( ReleaseDescriptor releaseDescriptor, List<MavenProject> reactorProjects )
+ protected static List<File> createPomFiles( ReleaseDescriptor releaseDescriptor,
+ List<MavenProject> reactorProjects )
{
List<File> pomFiles = new ArrayList<File>();
for ( MavenProject project : reactorProjects )
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java
index eb99b35..1d06095 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java
@@ -31,7 +31,8 @@
/**
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
* @version $Id$
- * @plexus.component role="org.apache.maven.shared.release.phase.ReleasePhase" role-hint="verify-completed-prepare-phases"
+ * @plexus.component role="org.apache.maven.shared.release.phase.ReleasePhase"
+ * role-hint="verify-completed-prepare-phases"
*/
public class CheckCompletedPreparePhasesPhase
extends AbstractReleasePhase
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
index a643733..dd3c85f 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
@@ -91,7 +91,8 @@
private Set<Artifact> usedSnapshotExtensions = new HashSet<Artifact>();
private Set<Artifact> usedSnapshotPlugins = new HashSet<Artifact>();
- public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
@@ -116,7 +117,8 @@
return result;
}
- private void checkProject( MavenProject project, Map<String, String> originalVersions, ReleaseDescriptor releaseDescriptor )
+ private void checkProject( MavenProject project, Map<String, String> originalVersions,
+ ReleaseDescriptor releaseDescriptor )
throws ReleaseFailureException, ReleaseExecutionException
{
@SuppressWarnings( "unchecked" )
@@ -289,7 +291,9 @@
}
}
- private static boolean checkArtifact( Artifact artifact, Map<String, String> originalVersions, Map<String, Artifact> artifactMapByVersionlessId, ReleaseDescriptor releaseDescriptor )
+ private static boolean checkArtifact( Artifact artifact, Map<String, String> originalVersions,
+ Map<String, Artifact> artifactMapByVersionlessId,
+ ReleaseDescriptor releaseDescriptor )
{
Artifact checkArtifact = getArtifactFromMap( artifact, artifactMapByVersionlessId );
@@ -308,14 +312,16 @@
return checkArtifact;
}
- private static boolean checkArtifact( Artifact artifact, Map<String, String> originalVersions, ReleaseDescriptor releaseDescriptor )
+ private static boolean checkArtifact( Artifact artifact, Map<String, String> 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
boolean result =
- artifact.isSnapshot() && !artifact.getBaseVersion().equals( originalVersions.get( versionlessArtifactKey ) );
+ 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.
@@ -327,7 +333,8 @@
return result;
}
- public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
// It makes no modifications, so simulate is the same as execute
@@ -357,8 +364,9 @@
return message;
}
- private void resolveSnapshots( Set<Artifact> projectDependencies, Set<Artifact> reportDependencies, Set<Artifact> extensionDependencies,
- Set<Artifact> pluginDependencies, ReleaseDescriptor releaseDescriptor )
+ private void resolveSnapshots( Set<Artifact> projectDependencies, Set<Artifact> reportDependencies,
+ Set<Artifact> extensionDependencies, Set<Artifact> pluginDependencies,
+ ReleaseDescriptor releaseDescriptor )
throws ReleaseExecutionException
{
try
@@ -403,6 +411,8 @@
case 4:
resolvedSnapshots = processSnapshot( extensionDependencies );
break;
+
+ default:
}
releaseDescriptor.getResolvedSnapshotDependencies().putAll( resolvedSnapshots );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java
index 282b63b..e8008cb 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckPomPhase.java
@@ -49,9 +49,15 @@
*/
private boolean scmRequired = true;
+ /**
+ * @since 2.5.2
+ */
+ private boolean snapshotsRequired = true;
+
private ScmRepositoryConfigurator scmRepositoryConfigurator;
- public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
@@ -83,7 +89,8 @@
try
{
- scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );
+ scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor,
+ releaseEnvironment.getSettings() );
}
catch ( ScmRepositoryException e )
{
@@ -103,10 +110,12 @@
if ( ArtifactUtils.isSnapshot( project.getVersion() ) )
{
containsSnapshotProjects = true;
+
+ break;
}
}
- if ( !containsSnapshotProjects && !releaseDescriptor.isBranchCreation() )
+ if ( snapshotsRequired && !containsSnapshotProjects && !releaseDescriptor.isBranchCreation() )
{
throw new ReleaseFailureException( "You don't have a SNAPSHOT project in the reactor projects list." );
}
@@ -116,7 +125,8 @@
return result;
}
- public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
// It makes no modifications, so simulate is the same as execute
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/EndReleasePhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/EndReleasePhase.java
index 0ae2376..f5de4f6 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/EndReleasePhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/EndReleasePhase.java
@@ -37,7 +37,8 @@
public class EndReleasePhase
extends AbstractReleasePhase
{
- public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
@@ -49,7 +50,8 @@
return result;
}
- public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhase.java
index dd3781e..d289b72 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhase.java
@@ -141,7 +141,8 @@
{
// create release pom
- Model releasePom = createReleaseModel( project, releaseDescriptor, releaseEnvironment, reactorProjects, result );
+ Model releasePom = createReleaseModel( project, releaseDescriptor, releaseEnvironment, reactorProjects,
+ result );
// write release pom to file
@@ -332,7 +333,8 @@
return releaseDescriptor.getReleaseVersions();
}
- private String getNextVersion( Map<String, String> mappedVersions, String groupId, String artifactId, String version )
+ private String getNextVersion( Map<String, String> mappedVersions, String groupId, String artifactId,
+ String version )
throws ReleaseFailureException
{
// TODO: share with RewritePomsForReleasePhase.rewriteVersion
@@ -429,7 +431,8 @@
return releaseDependencies;
}
- private String getReleaseVersion( Map<String, String> originalVersions, Map<String, String> mappedVersions, Artifact artifact )
+ private String getReleaseVersion( Map<String, String> originalVersions, Map<String, String> mappedVersions,
+ Artifact artifact )
throws ReleaseFailureException
{
String key = ArtifactUtils.versionlessKey( artifact );
@@ -461,7 +464,8 @@
return version;
}
- private List<Plugin> createReleasePlugins( Map<String, String> originalVersions, Map<String, String> mappedVersions, MavenProject project )
+ private List<Plugin> createReleasePlugins( Map<String, String> originalVersions,
+ Map<String, String> mappedVersions, MavenProject project )
throws ReleaseFailureException
{
List<Plugin> releasePlugins = null;
@@ -505,8 +509,8 @@
return releasePlugins;
}
- private List<ReportPlugin> createReleaseReportPlugins( Map<String, String> originalVersions, Map<String, String> mappedVersions,
- MavenProject project )
+ private List<ReportPlugin> createReleaseReportPlugins( Map<String, String> originalVersions,
+ Map<String, String> mappedVersions, MavenProject project )
throws ReleaseFailureException
{
List<ReportPlugin> releaseReportPlugins = null;
@@ -546,7 +550,8 @@
return releaseReportPlugins;
}
- private List<Extension> createReleaseExtensions( Map<String, String> originalVersions, Map<String, String> mappedVersions, MavenProject project )
+ private List<Extension> createReleaseExtensions( Map<String, String> originalVersions,
+ Map<String, String> mappedVersions, MavenProject project )
throws ReleaseFailureException
{
List<Extension> releaseExtensions = null;
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java
index 3f42bbf..5d77028 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/InputVariablesPhase.java
@@ -78,7 +78,8 @@
try
{
ScmRepository repository =
- scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );
+ scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor,
+ releaseEnvironment.getSettings() );
return scmRepositoryConfigurator.getRepositoryProvider( repository );
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
index 350c762..bc17ed8 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
@@ -52,7 +52,8 @@
* <p>
* <table>
* <tr>
- * <th>MapVersionsPhase field</th><th>map-release-versions</th><th>map-branch-versions</th><th>map-development-versions</th>
+ * <th>MapVersionsPhase field</th><th>map-release-versions</th><th>map-branch-versions</th>
+ * <th>map-development-versions</th>
* </tr>
* <tr>
* <td>convertToSnapshot</td> <td>false</td> <td>true</td> <td>true</td>
@@ -205,7 +206,8 @@
{
// no branch modification
if ( !( releaseDescriptor.isUpdateBranchVersions()
- && ( ArtifactUtils.isSnapshot( project.getVersion() ) || releaseDescriptor.isUpdateVersionsToSnapshot() ) ) )
+ && ( ArtifactUtils.isSnapshot( project.getVersion() )
+ || releaseDescriptor.isUpdateVersionsToSnapshot() ) ) )
{
return project.getVersion();
}
@@ -263,19 +265,20 @@
{
try
{
- suggestedVersion = resolveSuggestedVersion( baseVersion, releaseDescriptor.getProjectVersionPolicyId() );
+ suggestedVersion =
+ resolveSuggestedVersion( baseVersion, releaseDescriptor.getProjectVersionPolicyId() );
}
catch ( VersionParseException e )
{
if ( releaseDescriptor.isInteractive() )
{
- suggestedVersion = resolveSuggestedVersion( "1.0", releaseDescriptor.getProjectVersionPolicyId() );
+ suggestedVersion =
+ resolveSuggestedVersion( "1.0", releaseDescriptor.getProjectVersionPolicyId() );
}
else
{
- throw new ReleaseExecutionException(
- "Error parsing version, cannot determine next version: "
- + e.getMessage(), e );
+ throw new ReleaseExecutionException( "Error parsing version, cannot determine next "
+ + "version: " + e.getMessage(), e );
}
}
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ReleasePhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ReleasePhase.java
index 4fc2b5d..a0af657 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ReleasePhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ReleasePhase.java
@@ -51,7 +51,8 @@
* @throws ReleaseFailureException a failure during the execution of the phase
* @return the release result
*/
- ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException;
/**
@@ -64,7 +65,8 @@
* @throws ReleaseFailureException a failure during the execution of the phase
* @return the release result
*/
- ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List<MavenProject> reactorProjects )
+ ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List<MavenProject> reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException;
/**
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java
index 1913925..c4a644c 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java
@@ -54,12 +54,11 @@
return false;
}
- @SuppressWarnings( "unchecked" )
@Override
- protected Map<String, String> getOriginalVersionMap( ReleaseDescriptor releaseDescriptor, List<MavenProject> reactorProjects,
- boolean simulate )
+ protected Map<String, String> getOriginalVersionMap( ReleaseDescriptor releaseDescriptor,
+ List<MavenProject> reactorProjects, boolean simulate )
{
- return releaseDescriptor.getReleaseVersions();
+ return releaseDescriptor.getOriginalVersions( reactorProjects );
}
@SuppressWarnings( "unchecked" )
@@ -70,7 +69,8 @@
}
@Override
- protected String getResolvedSnapshotVersion( String artifactVersionlessKey, Map<String, Map<String, String>> resolvedSnapshotsMap )
+ protected String getResolvedSnapshotVersion( String artifactVersionlessKey,
+ Map<String, Map<String, String>> resolvedSnapshotsMap )
{
// Only update the pom version, not the dependency versions
return null;
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
index 6fb6e5b..9397a26 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
@@ -60,7 +60,8 @@
try
{
- translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result, commonBasedir );
+ translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result,
+ commonBasedir );
}
catch ( IOException e )
{
@@ -153,7 +154,8 @@
}
String value =
- translator.translateBranchUrl( scm.getConnection(), branchName + subDirectoryBranch, scmConnectionBranch );
+ translator.translateBranchUrl( scm.getConnection(), branchName + subDirectoryBranch,
+ scmConnectionBranch );
if ( !value.equals( scm.getConnection() ) )
{
rewriteElement( "connection", value, scmRoot, namespace );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
index 8b6b983..fc52404 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
@@ -61,7 +61,8 @@
try
{
- translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result, commonBasedir );
+ translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result,
+ commonBasedir );
}
catch ( IOException e )
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
index 4954fb5..26fb489 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
@@ -77,7 +77,8 @@
{
repository =
scmRepositoryConfigurator.getConfiguredRepository( basedirAlignedReleaseDescriptor.getScmSourceUrl(),
- releaseDescriptor, releaseEnvironment.getSettings() );
+ releaseDescriptor,
+ releaseEnvironment.getSettings() );
repository.getProviderRepository().setPushChanges( releaseDescriptor.isPushChanges() );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
index 9cb5a81..f93d6ca 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCheckModificationsPhase.java
@@ -94,7 +94,8 @@
// SelectorUtils expects OS-specific paths and patterns
for ( String additionalExclude : additionalExcludes )
{
- exclusionPatterns.add( additionalExclude.replace( "\\", File.separator ).replace( "/", File.separator ) );
+ exclusionPatterns.add( additionalExclude.replace( "\\", File.separator )
+ .replace( "/", File.separator ) );
}
}
@@ -106,7 +107,8 @@
try
{
repository =
- scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );
+ scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor,
+ releaseEnvironment.getSettings() );
provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java
index 88972fb..931cd42 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java
@@ -32,7 +32,8 @@
*
* @plexus.component role="org.apache.maven.shared.release.policy.version.VersionPolicy" role-hint="default"
*/
-public class DefaultVersionPolicy implements VersionPolicy
+public class DefaultVersionPolicy
+ implements VersionPolicy
{
public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request )
@@ -45,7 +46,8 @@
public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request )
throws PolicyException, VersionParseException
{
- String developmentVersion = new DefaultVersionInfo( request.getVersion() ).getNextVersion().getSnapshotVersionString();
+ String developmentVersion =
+ new DefaultVersionInfo( request.getVersion() ).getNextVersion().getSnapshotVersionString();
return new VersionPolicyResult().setVersion( developmentVersion );
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/PomFinder.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/PomFinder.java
index bf52ea9..e41e62b 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/PomFinder.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/PomFinder.java
@@ -307,7 +307,8 @@
{
return false;
}
- if ( parentGroupId != null ? !parentGroupId.equals( pomInfo.parentGroupId ) : pomInfo.parentGroupId != null )
+ if ( parentGroupId != null ? !parentGroupId.equals( pomInfo.parentGroupId )
+ : pomInfo.parentGroupId != null )
{
return false;
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
index 6180ad7..a179af7 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
@@ -26,6 +26,7 @@
import java.util.List;
import java.util.Locale;
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.model.Model;
import org.apache.maven.project.MavenProject;
@@ -47,8 +48,10 @@
*/
public class ReleaseUtil
{
+ @SuppressWarnings( "checkstyle:constantname" )
public static final String RELEASE_POMv4 = "release-pom.xml";
+ @SuppressWarnings( "checkstyle:constantname" )
public static final String POMv4 = "pom.xml";
private static final String FS = File.separator;
@@ -183,7 +186,8 @@
}
int parentLevels =
- getBaseWorkingDirectoryParentCount( basedir, FileUtils.normalize( releaseDescriptor.getWorkingDirectory() ) );
+ getBaseWorkingDirectoryParentCount( basedir,
+ FileUtils.normalize( releaseDescriptor.getWorkingDirectory() ) );
String url = releaseDescriptor.getScmSourceUrl();
url = realignScmUrl( parentLevels, url );
@@ -240,8 +244,8 @@
// we can safely assume case-insensitivity as we are just backtracking, not comparing. This helps with issues
// on Windows with C: vs c:
- workingDirectory = workingDirectory.toLowerCase( Locale.ENGLISH );
- basedir = basedir.toLowerCase( Locale.ENGLISH );
+ workingDirectory = FilenameUtils.normalize( workingDirectory.toLowerCase( Locale.ENGLISH ) );
+ basedir = FilenameUtils.normalize( basedir.toLowerCase( Locale.ENGLISH ) );
// MRELEASE-663
// For Windows is does matter if basedir ends with a file-separator or not to be able to compare.
@@ -265,6 +269,10 @@
{
if ( !StringUtils.isEmpty( url ) )
{
+ // normalize
+ url = url.replaceAll( "/\\./", "/" ).replaceAll( "/\\.$", "" ).
+ replaceAll( "/[^/]+/\\.\\./", "/" ).replaceAll( "/[^/]+/\\.\\.$", "" );
+
int index = url.length();
String suffix = "";
if ( url.endsWith( "/" ) )
@@ -272,6 +280,7 @@
index--;
suffix = "/";
}
+
for ( int i = 0; i < parentLevels && index > 0; i++ )
{
index = url.lastIndexOf( '/', index - 1 );
@@ -281,6 +290,7 @@
{
url = url.substring( 0, index ) + suffix;
}
+
}
return url;
}
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/versions/DefaultVersionInfo.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/versions/DefaultVersionInfo.java
index 97cc64a..b6ec732 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/versions/DefaultVersionInfo.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/versions/DefaultVersionInfo.java
@@ -54,7 +54,8 @@
* <p/>
* Leading zeros are significant when performing comparisons.
* <p/>
- * TODO: this parser is better than DefaultArtifactVersion - replace it with this (but align naming) and then remove this from here.
+ * TODO: this parser is better than DefaultArtifactVersion - replace it with this (but align naming) and then remove
+ * this from here.
*/
public class DefaultVersionInfo
implements VersionInfo
@@ -109,9 +110,8 @@
* branchName-SNAPSHOT
* SNAPSHOT
*/
- public static final Pattern ALTERNATE_PATTERN = Pattern.compile(
- "^(SNAPSHOT|[a-zA-Z]+[_-]SNAPSHOT)" // for SNAPSHOT releases only (possible versions include: trunk-SNAPSHOT or SNAPSHOT)
- );
+ // for SNAPSHOT releases only (possible versions include: trunk-SNAPSHOT or SNAPSHOT)
+ public static final Pattern ALTERNATE_PATTERN = Pattern.compile( "^(SNAPSHOT|[a-zA-Z]+[_-]SNAPSHOT)" );
/**
* Constructs this object and parses the supplied version string.
@@ -214,12 +214,13 @@
}
/**
- * Compares this {@link DefaultVersionInfo} to the supplied {@link DefaultVersionInfo}
- * to determine which version is greater.
+ * Compares this {@link DefaultVersionInfo} to the supplied {@link DefaultVersionInfo} to determine which version is
+ * greater.
*
* @param obj the comparison version
* @return the comparison value
- * @throws IllegalArgumentException if the components differ between the objects or if either of the annotations can not be determined.
+ * @throws IllegalArgumentException if the components differ between the objects or if either of the annotations can
+ * not be determined.
*/
public int compareTo( VersionInfo obj )
{
@@ -259,6 +260,11 @@
return compareTo( (VersionInfo) obj ) == 0;
}
+ public int hashCode()
+ {
+ return strVersion.toLowerCase( Locale.ENGLISH ).hashCode();
+ }
+
/**
* Takes a string and increments it as an integer.
* Preserves any lpad of "0" zeros.
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/ReleaseUtilsTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/ReleaseUtilsTest.java
index 659b885..b067983 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/ReleaseUtilsTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/ReleaseUtilsTest.java
@@ -284,6 +284,14 @@
assertEquals( "1.3-SNAPSHOT", versionMap.get( ReleaseDescriptor.DEVELOPMENT_KEY) );
}
+ // MRELEASE-834
+ public void testSystemPropertyStartingWithDependency()
+ {
+ Properties properties = new Properties();
+ properties.setProperty( "dependency.locations.enabled", "false" );
+ ReleaseUtils.copyPropertiesToReleaseDescriptor( properties );
+ }
+
private static ReleaseDescriptor copyReleaseDescriptor( ReleaseDescriptor originalReleaseDescriptor )
{
return createReleaseDescriptor( originalReleaseDescriptor.getWorkingDirectory() );
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java
index 0e9520d..1b5d1d6 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/exec/InvokerMavenExecutorTest.java
@@ -33,7 +33,6 @@
import org.apache.maven.settings.Settings;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
import org.apache.maven.shared.invoker.DefaultInvocationRequest;
-import org.apache.maven.shared.invoker.InvocationOutputHandler;
import org.apache.maven.shared.invoker.InvocationRequest;
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
@@ -83,6 +82,47 @@
}
@Test
+ public void testBatch()
+ throws Exception
+ {
+ Logger logger = mock( Logger.class );
+ executor.enableLogging( logger );
+
+ InvocationRequest req = new DefaultInvocationRequest();
+ // bug: assertEquals( true, req.isInteractive() );
+
+ req = new DefaultInvocationRequest();
+ req.setInteractive( true );
+ executor.setupRequest( req, null, "-B" );
+ assertEquals( false, req.isInteractive() );
+
+ req = new DefaultInvocationRequest();
+ req.setInteractive( true );
+ executor.setupRequest( req, null, "\"-B\"" );
+ assertEquals( false, req.isInteractive() );
+ }
+
+ @Test
+ public void testUserToolchains()
+ throws Exception
+ {
+ Logger logger = mock( Logger.class );
+ executor.enableLogging( logger );
+
+ InvocationRequest req = new DefaultInvocationRequest();
+ executor.setupRequest( req, null, "-t mytoolchains.xml" );
+ assertEquals( new File( "mytoolchains.xml" ), req.getToolchainsFile() );
+
+ req = new DefaultInvocationRequest();
+ executor.setupRequest( req, null, "-tmytoolchains.xml" );
+ assertEquals( new File( "mytoolchains.xml" ), req.getToolchainsFile() );
+
+ req = new DefaultInvocationRequest();
+ executor.setupRequest( req, null, "\"-tmytoolchains.xml\"" );
+ assertEquals( new File( "mytoolchains.xml" ), req.getToolchainsFile() );
+ }
+
+ @Test
public void testGlobalSettings()
throws Exception
{
@@ -117,6 +157,7 @@
ReleaseEnvironment releaseEnvironment = new DefaultReleaseEnvironment();
releaseEnvironment.setSettings( settings );
+ releaseEnvironment.setMavenHome( new File( System.getProperty( "injectedMavenHome" ) ) );
InvokerMavenExecutor executorSpy = spy( executor );
SettingsXpp3Writer settingsWriter = mock( SettingsXpp3Writer.class );
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
index 0ef1aa9..93cfeb9 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
@@ -21,6 +21,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assume.*;
import java.io.File;
@@ -178,6 +179,24 @@
}
@Test
+ public void testGetBaseScmUrlSingleLevelDotCharacter()
+ throws Exception
+ {
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk",
+ ReleaseUtil.realignScmUrl( 0, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/." ) );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/",
+ ReleaseUtil.realignScmUrl( 0, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/./" ) );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/project",
+ ReleaseUtil.realignScmUrl( 0, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/./project" ) );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module",
+ ReleaseUtil.realignScmUrl( 0, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/.." ) );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/",
+ ReleaseUtil.realignScmUrl( 0, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/../" ) );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/branches",
+ ReleaseUtil.realignScmUrl( 0, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/../branches" ) );
+ }
+
+ @Test
public void testGetBaseScmUrlReturnOriginal()
throws Exception
{
@@ -219,34 +238,84 @@
}
@Test
+ public void testGetBaseWorkingDirectoryParentCountSameDirectoryDotCharacter()
+ {
+ String workingDirectory = new File( "/working/directory/maven/release/." ).getAbsolutePath();
+ assertTrue( workingDirectory.contains( "." ) );
+ String basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
+ assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+
+ // finish with slash
+ workingDirectory = new File( "/working/directory/maven/release/./" ).getAbsolutePath();
+ assertTrue( workingDirectory.contains( "." ) );
+ basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
+ assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
+ @Test
public void testGetBaseWorkingDirectoryParentCountSubdirectory()
{
- String workingDirectory = "/working/directory/maven/release";
- String basedir = "/working/directory/maven/release/maven-release-manager";
+ String workingDirectory = new File( "/working/directory/maven/release" ).getAbsolutePath();
+ String basedir = new File( "/working/directory/maven/release/maven-release-manager" ).getAbsolutePath();
assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
}
@Test
public void testGetBaseWorkingDirectoryParentCountParentDirectory()
{
- String workingDirectory = "/working/directory/maven/release/maven-release-manager";
- String basedir = "/working/directory/maven/release";
+ String workingDirectory =
+ new File( "/working/directory/maven/release/maven-release-manager" ).getAbsolutePath();
+ String basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
+ assertEquals( 1, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
+ @Test
+ public void testGetBaseWorkingDirectoryParentCountParentDirectoryDotCharacter()
+ {
+ String workingDirectory =
+ new File( "/working/directory/maven/release/maven-release-manager/." ).getAbsolutePath();
+ assertTrue( workingDirectory.contains( "." ) );
+ String basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
+ assertEquals( 1, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+
+ // finish with slash
+ workingDirectory = new File( "/working/directory/maven/release/maven-release-manager/./" ).getAbsolutePath();
+ assertTrue( workingDirectory.contains( "." ) );
+ basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
assertEquals( 1, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
}
@Test
public void testGetBaseWorkingDirectoryParentCountParentDirectoryMultiple()
{
- String workingDirectory = "/working/directory/maven/release/maven-release-manager";
- String basedir = "/working/directory";
+ String workingDirectory =
+ new File( "/working/directory/maven/release/maven-release-manager" ).getAbsolutePath();
+ String basedir = new File( "/working/directory" ).getAbsolutePath();
+ assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
+ @Test
+ public void testGetBaseWorkingDirectoryParentCountParentDirectoryMultipleDotCharacter()
+ {
+ String workingDirectory =
+ new File( "/working/directory/maven/release/maven-release-manager/./." ).getAbsolutePath();
+ assertTrue( workingDirectory.contains( "." ) );
+ String basedir = new File( "/working/directory" ).getAbsolutePath();
+ assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+
+ // finish with slash
+ workingDirectory = new File( "/working/directory/maven/release/maven-release-manager/././" ).getAbsolutePath();
+ assertTrue( workingDirectory.contains( "." ) );
+ basedir = new File( "/working/directory" ).getAbsolutePath();
assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
}
@Test
public void testGetBaseWorkingDirectoryParentCountDifferentCase()
{
- String workingDirectory = "/Working/Directory/maven/release/maven-release-manager";
- String basedir = "/working/directory";
+ String workingDirectory =
+ new File( "/Working/Directory/maven/release/maven-release-manager" ).getAbsolutePath();
+ String basedir = new File( "/working/directory" ).getAbsolutePath();
assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
}
diff --git a/maven-release-plugin/pom.xml b/maven-release-plugin/pom.xml
index 4085fba..f01877d 100644
--- a/maven-release-plugin/pom.xml
+++ b/maven-release-plugin/pom.xml
@@ -117,6 +117,7 @@
<build>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<configuration>
<stagingSiteURL>scp://people.apache.org/www/maven.apache.org/plugins/${project.artifactId}-${project.version}</stagingSiteURL>
@@ -145,6 +146,7 @@
</executions>
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
@@ -171,7 +173,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
- <version>1.8</version>
+ <version>1.10</version>
<configuration>
<projectsDirectory>src/it</projectsDirectory>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
@@ -206,7 +208,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
- <version>1.8</version>
+ <version>1.10</version>
<executions>
<execution>
<id>integration-test-prepare</id>
diff --git a/maven-release-plugin/src/it/projects/prepare/MRELEASE-834/pom.xml b/maven-release-plugin/src/it/projects/prepare/MRELEASE-834/pom.xml
new file mode 100644
index 0000000..c031b78
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/prepare/MRELEASE-834/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more
+ contributor license agreements. See the NOTICE file ~ distributed with this
+ work for additional information ~ regarding copyright ownership. The ASF
+ licenses this file ~ to you 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.plugin.release.its</groupId>
+ <artifactId>mrelease-834</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <scm>
+ <connection>scm:dummy|nul</connection>
+ <developerConnection>scm:dummy|nul</developerConnection>
+ </scm>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>@project.version@</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.release</groupId>
+ <artifactId>maven-scm-provider-dummy</artifactId>
+ <version>1.0</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/maven-release-plugin/src/it/projects/prepare/MRELEASE-834/test.properties b/maven-release-plugin/src/it/projects/prepare/MRELEASE-834/test.properties
new file mode 100644
index 0000000..3fc1992
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/prepare/MRELEASE-834/test.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+dependency.locations.enabled=false
\ No newline at end of file
diff --git a/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/module-a/pom.xml b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/module-a/pom.xml
new file mode 100644
index 0000000..9df4fde
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/module-a/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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>
+ <parent>
+ <groupId>org.apache.maven.plugin.release.its</groupId>
+ <artifactId>mrelease-555</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>module-a</artifactId>
+</project>
diff --git a/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/module-b/pom.xml b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/module-b/pom.xml
new file mode 100644
index 0000000..f15f5a2
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/module-b/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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>
+ <parent>
+ <groupId>org.apache.maven.plugin.release.its</groupId>
+ <artifactId>mrelease-555</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>module-b</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.plugin.release.its</groupId>
+ <artifactId>module-a</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/pom.xml b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/pom.xml
new file mode 100644
index 0000000..c659fa2
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/pom.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.plugin.release.its</groupId>
+ <artifactId>mrelease-555</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0-SNAPSHOT</version>
+
+ <url>http://jira.codehaus.org/browse/MRELEASE-555</url>
+
+ <modules>
+ <module>module-a</module>
+ <module>module-b</module>
+ </modules>
+</project>
diff --git a/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/verify.groovy b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/verify.groovy
new file mode 100644
index 0000000..ec16ecd
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-555/verify.groovy
@@ -0,0 +1,28 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+File buildLog = new File( basedir, 'build.log' )
+assert buildLog.exists()
+
+def projectRoot = new XmlSlurper().parse( new File( basedir, "module-b/pom.xml" ) )
+
+assert projectRoot.dependencies.dependency.version.text() == "1.1-SNAPSHOT"
+
+return true
\ No newline at end of file
diff --git a/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/pom.xml b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/pom.xml
new file mode 100644
index 0000000..41312c0
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.release</groupId>
+ <artifactId>mrelease-661</artifactId>
+ <version>1.0</version>
+ <packaging>pom</packaging>
+
+ <url>http://jira.codehaus.org/browse/MRELEASE-611</url>
+
+ <description>Ensure you can update from a non-SNAPSHOT project</description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>@project.version@</version>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy
new file mode 100644
index 0000000..b87eb47
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy
@@ -0,0 +1,28 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+File buildLog = new File( basedir, 'build.log' )
+assert buildLog.exists()
+
+def projectRoot = new XmlSlurper().parse( new File( basedir, "pom.xml" ) )
+
+assert projectRoot.version.text() == "1.1-SNAPSHOT"
+
+return true
\ No newline at end of file
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java
index 5ca9b40..87aca4a 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractScmReleaseMojo.java
@@ -96,7 +96,8 @@
/**
* Add a new or overwrite the default implementation per provider.
- * The key is the scm prefix and the value is the role hint of the {@link org.apache.maven.scm.provider.ScmProvider}.
+ * The key is the scm prefix and the value is the role hint of the
+ * {@link org.apache.maven.scm.provider.ScmProvider}.
*
* @since 2.0-beta-6
* @see ScmManager#setScmProviderImplementation(String, String)
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
index 509ab17..0b36716 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
@@ -31,8 +31,9 @@
import org.apache.maven.shared.release.config.ReleaseUtils;
/**
- * Branch a project in SCM, using the same steps as the <tt>release:prepare</tt> goal, creating a branch instead of a tag.
- * For more info see <a href="http://maven.apache.org/plugins/maven-release-plugin/examples/branch.html">http://maven.apache.org/plugins/maven-release-plugin/examples/branch.html</a>.
+ * Branch a project in SCM, using the same steps as the <tt>release:prepare</tt> goal, creating a branch instead of a
+ * tag. For more info see <a href="http://maven.apache.org/plugins/maven-release-plugin/examples/branch.html"
+ * >http://maven.apache.org/plugins/maven-release-plugin/examples/branch.html</a>.
*
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
* @version $Id$
@@ -52,9 +53,9 @@
private String branchName;
/**
- * The branch base directory in SVN, you must define it if you don't use the standard svn layout (trunk/tags/branches).
- * For example, <code>http://svn.apache.org/repos/asf/maven/plugins/branches</code>. The URL is an SVN URL and does not
- * include the SCM provider and protocol.
+ * The branch base directory in SVN, you must define it if you don't use the standard svn layout
+ * (trunk/tags/branches). For example, <code>http://svn.apache.org/repos/asf/maven/plugins/branches</code>. The URL
+ * is an SVN URL and does not include the SCM provider and protocol.
*
* @since 2.0
*/
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
index 6ecb582..0dc7b79 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
@@ -28,7 +28,8 @@
* Clean up after a release preparation. This is done automatically after a successful <tt>release:perform</tt>,
* so is best served for cleaning up a failed or abandoned release, or a dry run. Note that only the working copy
* is cleaned up, no previous steps are rolled back.
- * For more info see <a href="http://maven.apache.org/plugins/maven-release-plugin/examples/clean-release.html">http://maven.apache.org/plugins/maven-release-plugin/examples/clean-release.html</a>.
+ * For more info see <a href="http://maven.apache.org/plugins/maven-release-plugin/examples/clean-release.html"
+ * >http://maven.apache.org/plugins/maven-release-plugin/examples/clean-release.html</a>.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @version $Id$
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
index e287b00..4745306 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
@@ -34,7 +34,8 @@
/**
* Perform a release from SCM, either from a specified tag, or the tag representing the previous release in
* the working copy created by <tt>release:prepare</tt>.
- * For more info see <a href="http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html">http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html</a>.
+ * For more info see <a href="http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html"
+ * >http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html</a>.
*
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
@@ -49,7 +50,7 @@
* <code>deploy site-deploy</code>, if the project has a <distributionManagement>/<site> element.
*/
@Parameter( property = "goals" )
- private String goals;
+ String goals;
/**
* Comma separated profiles to enable on deployment, in addition to active profiles for project execution.
@@ -79,7 +80,7 @@
*
* TODO: we should think about having the defaults for the various SCM providers provided via modello!
*
- * @since 2.0
+ * @since 2.0 for release:perform and 2.5.2 for release:stage
*/
@Parameter( defaultValue = "false", property = "localCheckout" )
private boolean localCheckout;
@@ -134,6 +135,7 @@
try
{
+ setDeploymentRepository();
// Note that the working directory here is not the same as in the release configuration, so don't reuse that
ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
if ( connectionUrl != null )
@@ -146,7 +148,7 @@
releaseDescriptor.setScmUsername( username );
}
- if( password != null )
+ if ( password != null )
{
releaseDescriptor.setScmPassword( password );
}
@@ -156,16 +158,7 @@
releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
- if ( goals == null )
- {
- // set default
- goals = "deploy";
- if ( project.getDistributionManagement() != null
- && project.getDistributionManagement().getSite() != null )
- {
- goals += " site-deploy";
- }
- }
+ createGoals();
releaseDescriptor.setPerformGoals( goals );
ReleasePerformRequest performRequest = new ReleasePerformRequest();
@@ -185,4 +178,24 @@
throw new MojoFailureException( e.getMessage(), e );
}
}
+
+ /** Just here so it may be overridden by StageReleaseMojo */
+ void setDeploymentRepository()
+ {
+ }
+
+ /** Just here so it may be overridden by StageReleaseMojo */
+ void createGoals()
+ {
+ if ( goals == null )
+ {
+ // set default
+ goals = "deploy";
+ if ( project.getDistributionManagement() != null
+ && project.getDistributionManagement().getSite() != null )
+ {
+ goals += " site-deploy";
+ }
+ }
+ }
}
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
index ac9a75a..07636b1 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
@@ -233,8 +233,8 @@
{
if ( generateReleasePoms )
{
- throw new MojoFailureException(
- "Generating release POMs is no longer supported in release:prepare. Please run release:prepare-with-pom instead." );
+ throw new MojoFailureException( "Generating release POMs is no longer supported in release:prepare. "
+ + "Please run release:prepare-with-pom instead." );
}
prepareRelease( generateReleasePoms );
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
index 39bf555..fd0cad0 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
@@ -27,15 +27,16 @@
import org.apache.maven.shared.release.config.ReleaseDescriptor;
/**
- * Rollback changes made by a previous release. This requires that the previous release descriptor <tt>release.properties</tt>
- * is still available in the local working copy.
- * For more info see <a href="http://maven.apache.org/plugins/maven-release-plugin/examples/rollback-release.html">http://maven.apache.org/plugins/maven-release-plugin/examples/rollback-release.html</a>.
+ * Rollback changes made by a previous release. This requires that the previous release descriptor
+ * <tt>release.properties</tt> is still available in the local working copy. For more info see <a
+ * href="http://maven.apache.org/plugins/maven-release-plugin/examples/rollback-release.html"
+ * >http://maven.apache.org/plugins/maven-release-plugin/examples/rollback-release.html</a>.
*
* @since 2.0-beta-5
* @author Edwin Punzalan
* @version $Id$
*/
-@Mojo( name="rollback", aggregator = true )
+@Mojo( name = "rollback", aggregator = true )
public class RollbackReleaseMojo
extends AbstractScmReleaseMojo
{
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
index 48ae8bf..c0a5a04 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
@@ -19,19 +19,18 @@
* under the License.
*/
-import java.io.File;
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.shared.release.ReleaseExecutionException;
-import org.apache.maven.shared.release.ReleaseFailureException;
-import org.apache.maven.shared.release.config.ReleaseDescriptor;
import org.codehaus.plexus.util.StringUtils;
/**
* Perform a release from SCM to a staging repository.
+ *
+ * If no goals are given, these default to <code>deploy</code> or <code>deploy site:stage-deploy</code>,
+ * if the project has a <distributionManagement>/<site> element.
+ *
+ * If the goals contain <code>site-deploy</code> or <code>site:deploy</code>, these
+ * are overridden with <code>site:stage-deploy</code>.
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
* @version $Id$
@@ -39,51 +38,9 @@
*/
@Mojo( name = "stage", aggregator = true, requiresProject = false )
public class StageReleaseMojo
- extends AbstractScmReleaseMojo
+ extends PerformReleaseMojo
{
/**
- * A comma or space separated list of goals to execute on deployment. Default value is either <code>deploy</code> or
- * <code>deploy site-deploy</code>, if the project has a <distributionManagement>/<site> element.
- *
- * @since 2.0-beta-8
- */
- @Parameter( property = "goals" )
- private String goals;
-
- /**
- * Comma separated profiles to enable on deployment, in addition to active profiles for project execution.
- *
- * @since 2.0-beta-8
- */
- @Parameter( property = "releaseProfiles" )
- private String releaseProfiles;
-
- /**
- * The checkout directory.
- *
- * @since 2.0-beta-8
- */
- @Parameter( defaultValue = "${project.build.directory}/checkout", property = "workingDirectory", required = true )
- private File workingDirectory;
-
- /**
- * The SCM URL to checkout from. If omitted, the one from the <code>release.properties</code> file is used, followed
- * by the URL from the current POM.
- *
- * @since 2.0-beta-8
- */
- @Parameter( property = "connectionUrl" )
- private String connectionUrl;
-
- /**
- * Whether to use the release profile that adds sources and javadocs to the released artifact, if appropriate.
- *
- * @since 2.0-beta-8
- */
- @Parameter( defaultValue = "true", property = "useReleaseProfile" )
- private boolean useReleaseProfile;
-
- /**
* URL of the staging repository to use.
*
* @since 2.0-beta-8
@@ -91,68 +48,27 @@
@Parameter( property = "stagingRepository", required = true )
private String stagingRepository;
- /**
- * {@inheritDoc}
- */
- protected String getAdditionalProfiles()
+ @Override
+ void createGoals()
{
- return releaseProfiles;
+ if ( goals == null )
+ {
+ // set default
+ goals = "deploy";
+ if ( project.getDistributionManagement() != null
+ && project.getDistributionManagement().getSite() != null )
+ {
+ goals += " site:stage-deploy";
+ }
+ }
+
+ goals = StringUtils.replace( goals, "site-deploy", "site:stage-deploy" );
+ goals = StringUtils.replace( goals, "site:deploy", "site:stage-deploy" );
}
- /**
- * {@inheritDoc}
- */
- public void execute()
- throws MojoExecutionException, MojoFailureException
+ @Override
+ void setDeploymentRepository()
{
- super.execute();
-
- // goals may be splitted into multiple line in configuration.
- // Let's build a single line command
- if ( goals != null )
- {
- goals = StringUtils.join( StringUtils.split( goals ), " " );
- }
-
- try
- {
- addArgument( "-DaltDeploymentRepository=\"" + stagingRepository + "\"" );
-
- // Note that the working directory here is not the same as in the release configuration, so don't reuse that
- ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
- if ( connectionUrl != null )
- {
- releaseDescriptor.setScmSourceUrl( connectionUrl );
- }
-
- releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
- releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
-
- if ( goals == null )
- {
- // set default
- goals = "deploy";
- if ( project.getDistributionManagement() != null
- && project.getDistributionManagement().getSite() != null )
- {
- goals += " site:stage-deploy";
- }
- }
-
- goals = StringUtils.replace( goals, "site-deploy", "site:stage-deploy" );
- goals = StringUtils.replace( goals, "site:deploy", "site:stage-deploy" );
-
- releaseDescriptor.setPerformGoals( goals );
-
- releaseManager.perform( releaseDescriptor, getReleaseEnvironment(), getReactorProjects(), false );
- }
- catch ( ReleaseExecutionException e )
- {
- throw new MojoExecutionException( e.getMessage(), e );
- }
- catch ( ReleaseFailureException e )
- {
- throw new MojoFailureException( e.getMessage(), e );
- }
+ addArgument( "-DaltDeploymentRepository=\"" + stagingRepository + "\"" );
}
}
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java
index 23680cc..e1c1896 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java
@@ -74,6 +74,22 @@
private String developmentVersion;
/**
+ * Whether to update dependencies version to the next development version.
+ *
+ * @since 2.5.2
+ */
+ @Parameter( defaultValue = "true", property = "updateDependencies" )
+ private boolean updateDependencies;
+
+ /**
+ * Whether to use "edit" mode on the SCM, to lock the file for editing during SCM operations.
+ *
+ * @since 2.5.2
+ */
+ @Parameter( defaultValue = "false", property = "useEditMode" )
+ private boolean useEditMode;
+
+ /**
* {@inheritDoc}
*/
public void execute()
@@ -83,6 +99,8 @@
config.setAddSchema( addSchema );
config.setAutoVersionSubmodules( autoVersionSubmodules );
config.setDefaultDevelopmentVersion( developmentVersion );
+ config.setScmUseEditMode( useEditMode );
+ config.setUpdateDependencies( updateDependencies );
Map<String, Scm> originalScmInfo = new HashMap<String, Scm>();
originalScmInfo.put( ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ),
diff --git a/maven-release-plugin/src/site/apt/examples/perform-release.apt.vm b/maven-release-plugin/src/site/apt/examples/perform-release.apt.vm
index 19822ee..7bf4033 100644
--- a/maven-release-plugin/src/site/apt/examples/perform-release.apt.vm
+++ b/maven-release-plugin/src/site/apt/examples/perform-release.apt.vm
@@ -45,11 +45,13 @@
you need to give the goal the URL and an optional tag to perform the release from. For example:
-------
-mvn release:perform -DconnectionUrl=scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-release-plugin-2.0
+mvn org.apache.maven.plugins:maven-release-plugin:${project.version}:perform -DconnectionUrl=scm:svn:https://svn.mycompany.com/repos/path/to/myproject/tags/myproject-1.2.3
-------
<<<release:perform>>> will fork a new Maven instance to build the checked-out project. This new Maven instance will use the
- same system configuration and Maven profiles used by the one running the <<<release:perform>>> goal.
+ same system configuration and Maven profiles used by the one running the <<<release:perform>>> goal. Since there's no pom.xml,
+ you should use the fully qualified name of the goal to ensure the right version of the maven-release-plugin is used.
+
It is possible to
force some profiles to get enabled during release (for example to enable time-consuming tasks that are only relevant
@@ -58,6 +60,7 @@
-------
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${project.version}</version>
<configuration>
diff --git a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java
index a2ea59f..882bffa 100644
--- a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java
+++ b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java
@@ -34,11 +34,13 @@
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.release.ReleaseManager;
+import org.apache.maven.shared.release.ReleasePerformRequest;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
import org.apache.maven.shared.release.env.ReleaseEnvironment;
+import org.mockito.ArgumentCaptor;
/**
- * Test release:perform.
+ * Test release:stage.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
*/
@@ -60,15 +62,38 @@
releaseDescriptor.setPerformGoals( "deploy site:stage-deploy" );
releaseDescriptor.setAdditionalArguments( "-DaltDeploymentRepository=\"staging\"" );
+ ReleasePerformRequest performRequest = new ReleasePerformRequest();
+ performRequest.setReleaseDescriptor( releaseDescriptor );
+ performRequest.setReleaseEnvironment( mojo.getReleaseEnvironment() );
+ performRequest.setReactorProjects( mojo.getReactorProjects() );
+ performRequest.setDryRun( false );
+
ReleaseManager mock = mock( ReleaseManager.class );
mojo.setReleaseManager( mock );
mojo.execute();
- verify( mock ).perform( eq( releaseDescriptor ), isA( ReleaseEnvironment.class ), isNull( List.class ), eq( false ) );
+ // verify
+ ArgumentCaptor<ReleasePerformRequest> argument = ArgumentCaptor.forClass(ReleasePerformRequest.class);
+ verify( mock ).perform( argument.capture() );
+ assertEquals( releaseDescriptor, argument.getValue().getReleaseDescriptor() );
+ assertNotNull( argument.getValue().getReleaseEnvironment() );
+ assertNull( argument.getValue().getReactorProjects() );
+ assertEquals( Boolean.FALSE, argument.getValue().getDryRun() );
verifyNoMoreInteractions( mock );
}
+ public void testCreateGoals()
+ throws Exception
+ {
+ StageReleaseMojo mojo = getMojoWithProjectSite( "stage.xml" );
+ mojo.createGoals();
+ assertEquals( "deploy site:stage-deploy", mojo.goals );
+ mojo.goals = "deploy site:deploy";
+ mojo.createGoals();
+ assertEquals( "deploy site:stage-deploy", mojo.goals );
+ }
+
private StageReleaseMojo getMojoWithProjectSite( String fileName )
throws Exception
{
diff --git a/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicy.java b/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicy.java
index 4bcf967..f22d699 100644
--- a/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicy.java
+++ b/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicy.java
@@ -55,7 +55,8 @@
return calculateNextVersion( request, true );
}
- private VersionPolicyResult calculateNextVersion( VersionPolicyRequest request, boolean development ) {
+ private VersionPolicyResult calculateNextVersion( VersionPolicyRequest request, boolean development )
+ {
DefaultVersionInfo defaultVersionInfo = null;
try
diff --git a/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/package-info.java b/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/package-info.java
index fd82cec..4f00635 100644
--- a/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/package-info.java
+++ b/maven-release-policies/maven-release-oddeven-policy/src/main/java/org/apache/maven/shared/release/policy/oddeven/package-info.java
@@ -1,10 +1,10 @@
+// CHECKSTYLE_OFF: RegexpHeader
/**
- * A {@link VersionPolicy} implementation that allows release even version numbers only and skips the odd.
+ * A {@link org.apache.maven.shared.release.policy.version.VersionPolicy VersionPolicy} implementation that allows
+ * release even version numbers only and skips the odd.
*/
package org.apache.maven.shared.release.policy.oddeven;
-import org.apache.maven.shared.release.policy.version.VersionPolicy;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
diff --git a/maven-release-policies/maven-release-semver-policy/pom.xml b/maven-release-policies/maven-release-semver-policy/pom.xml
new file mode 100644
index 0000000..17cd27f
--- /dev/null
+++ b/maven-release-policies/maven-release-semver-policy/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.maven.release</groupId>
+ <artifactId>maven-release</artifactId>
+ <version>2.5.2-SNAPSHOT</version>
+ <relativePath>../..</relativePath>
+ </parent>
+
+ <artifactId>maven-release-semver-policy</artifactId>
+
+ <name>Maven Release SemVer Policy</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.parent.groupId}</groupId>
+ <artifactId>maven-release-api</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.semver</groupId>
+ <artifactId>api</artifactId>
+ <version>0.9.33</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-metadata</artifactId>
+ <version>1.5.5</version>
+ <executions>
+ <execution>
+ <id>process-classes</id>
+ <goals>
+ <goal>generate-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
new file mode 100644
index 0000000..4cbfdb1
--- /dev/null
+++ b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
@@ -0,0 +1,75 @@
+package org.apache.maven.shared.release.policy.semver;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import org.apache.maven.shared.release.policy.PolicyException;
+import org.apache.maven.shared.release.policy.version.VersionPolicy;
+import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
+import org.apache.maven.shared.release.policy.version.VersionPolicyResult;
+import org.apache.maven.shared.release.versions.VersionParseException;
+import org.codehaus.plexus.component.annotations.Component;
+import org.semver.Version;
+import org.semver.Version.Element;
+
+@Component(
+ role = VersionPolicy.class,
+ hint = "SemVerVersionPolicy",
+ description = "A VersionPolicy following the SemVer rules"
+ )
+public class SemVerVersionPolicy implements VersionPolicy
+{
+
+ public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request )
+ throws PolicyException, VersionParseException
+ {
+ Version version;
+ try
+ {
+ version = Version.parse( request.getVersion() );
+ }
+ catch( IllegalArgumentException e )
+ {
+ throw new VersionParseException( e.getMessage() );
+ }
+
+ VersionPolicyResult result = new VersionPolicyResult();
+ result.setVersion( version.toReleaseVersion().toString() );
+ return result;
+ }
+
+ public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request )
+ throws PolicyException, VersionParseException
+ {
+ Version version;
+ try
+ {
+ version = Version.parse( request.getVersion() );
+ }
+ catch( IllegalArgumentException e )
+ {
+ throw new VersionParseException( e.getMessage() );
+ }
+
+ version = version.next( Element.MINOR );
+ VersionPolicyResult result = new VersionPolicyResult();
+ result.setVersion( version.toString() + "-SNAPSHOT" );
+ return result;
+ }
+}
diff --git a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
new file mode 100644
index 0000000..bf37636
--- /dev/null
+++ b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
@@ -0,0 +1,71 @@
+package org.apache.maven.shared.release.policy.semver;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import static org.junit.Assert.*;
+
+import org.apache.maven.shared.release.policy.version.VersionPolicy;
+import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SemVerVersionPolicyTest
+{
+
+ private VersionPolicy versionPolicy;
+
+ @Before
+ public void setUp()
+ {
+ versionPolicy = new SemVerVersionPolicy();
+ }
+
+ @After
+ public void tearDown()
+ {
+ versionPolicy = null;
+ }
+
+ @Test
+ public void testConvertToSnapshot()
+ throws Exception
+ {
+ String suggestedVersion = versionPolicy.getDevelopmentVersion( newVersionPolicyRequest( "1.0.0" ) )
+ .getVersion();
+
+ assertEquals( "1.1.0-SNAPSHOT", suggestedVersion );
+ }
+
+ @Test
+ public void testConvertToRelease()
+ throws Exception
+ {
+ String suggestedVersion = versionPolicy.getReleaseVersion( newVersionPolicyRequest( "1.0.0-SNAPSHOT" ) )
+ .getVersion();
+
+ assertEquals( "1.0.0", suggestedVersion );
+ }
+
+ private static VersionPolicyRequest newVersionPolicyRequest( String version )
+ {
+ return new VersionPolicyRequest().setVersion( version );
+ }
+}
diff --git a/pom.xml b/pom.xml
index b3b8b68..f842ffc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
- <version>24</version>
+ <version>26</version>
<relativePath>../pom/maven/pom.xml</relativePath>
</parent>
@@ -41,6 +41,9 @@
<module>maven-release-manager</module>
<module>maven-release-plugin</module>
<module>maven-release-policies/maven-release-oddeven-policy</module>
+ <!-- org.semver:api:jar:0.9.3 requires JDK 1.6
+ <module>maven-release-policies/maven-release-semver-policy REMOVE apache-rat-plugin</module>
+ -->
</modules>
<scm>
@@ -50,7 +53,7 @@
</scm>
<issueManagement>
<system>jira</system>
- <url>http://jira.codehaus.org/browse/MRELEASE</url>
+ <url>https://issues.apache.org/jira/browse/MRELEASE</url>
</issueManagement>
<ciManagement>
<system>Jenkins</system>
@@ -59,7 +62,7 @@
<distributionManagement>
<site>
<id>apache.website</id>
- <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</url>
+ <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/components/${maven.site.path}</url>
</site>
</distributionManagement>
@@ -67,14 +70,46 @@
<contributor>
<name>John R Fallows</name>
</contributor>
+ <contributor>
+ <name>Gertjan Gaillet</name>
+ </contributor>
+ <contributor>
+ <name>Russ Kociuba</name>
+ </contributor>
</contributors>
<properties>
- <scmVersion>1.9.2</scmVersion>
+ <scmVersion>1.9.4</scmVersion>
<mavenVersion>2.2.1</mavenVersion>
<maven.site.path>maven-release-archives/maven-release-LATEST</maven.site.path>
</properties>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes combine.children="append">
+ <!--
+ This module is not yet included
+ -->
+ <exclude>maven-release-policies/maven-release-semver-policy/**/*.*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <configuration>
+ <autoVersionSubmodules>true</autoVersionSubmodules>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
<dependencyManagement>
<dependencies>
<dependency>
@@ -104,18 +139,4 @@
</dependency>
</dependencies>
</dependencyManagement>
-
- <build>
- <pluginManagement>
- <plugins>
- <plugin><!-- TODO remove when upgrading maven-parent to 25 -->
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-site-plugin</artifactId>
- <configuration>
- <topSiteURL>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/content/${maven.site.path}</topSiteURL>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
</project>