You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by oc...@apache.org on 2009/05/24 07:35:41 UTC
svn commit: r778088 [1/2] - in /maven/release/trunk: maven-release-manager/
maven-release-manager/src/main/java/org/apache/maven/shared/release/config/
maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/
maven-release-manager/src...
Author: oching
Date: Sun May 24 05:35:37 2009
New Revision: 778088
URL: http://svn.apache.org/viewvc?rev=778088&view=rev
Log:
[MRELEASE-261]/[MRELEASE-322]/[MRELEASE-225]/[MRELEASE-336]
o fix releasing of projects with flat structure
o determine base working directory and the base scm url based on the root project's working dir and scm url, and the relative path of it's modules
o added unit tests and integration tests
Added:
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/expected-pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/expected-pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/pom.xml
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/pom.xml
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/pom.xml
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/pom.xml
maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/verify.bsh
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/pom.xml
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/pom.xml
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/pom.xml
maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/verify.bsh
maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/stubs/FlatMultiModuleMavenProjectStub.java
maven/release/trunk/maven-release-plugin/src/test/resources/mojos/perform/perform-with-flat-structure.xml
Modified:
maven/release/trunk/maven-release-manager/pom.xml
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
maven/release/trunk/maven-release-plugin/pom.xml
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PerformReleaseMojoTest.java
Modified: maven/release/trunk/maven-release-manager/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/pom.xml?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/pom.xml Sun May 24 05:35:37 2009
@@ -96,9 +96,20 @@
<version>2.0.9</version>
</dependency>
<dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<!-- scm dependencies -->
@@ -212,7 +223,7 @@
</execution>
</executions>
<configuration>
- <version>1.0.0</version>
+ <version>2.0.0</version>
<packageWithVersion>false</packageWithVersion>
<model>src/main/mdo/release-descriptor.mdo</model>
</configuration>
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java Sun May 24 05:35:37 2009
@@ -64,7 +64,9 @@
mergeInto.setScmPrivateKeyPassPhrase(
mergeOverride( mergeInto.getScmPrivateKeyPassPhrase(), toBeMerged.getScmPrivateKeyPassPhrase() ) );
mergeInto.setScmCommentPrefix(
- mergeOverride( mergeInto.getScmCommentPrefix(), toBeMerged.getScmCommentPrefix() ) );
+ mergeOverride( mergeInto.getScmCommentPrefix(), toBeMerged.getScmCommentPrefix() ) );
+ mergeInto.setRootProjectPath(
+ mergeDefault( mergeInto.getRootProjectPath(), toBeMerged.getRootProjectPath() ) );
mergeInto.setAdditionalArguments(
mergeOverride( mergeInto.getAdditionalArguments(), toBeMerged.getAdditionalArguments() ) );
mergeInto.setPreparationGoals(
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java Sun May 24 05:35:37 2009
@@ -79,7 +79,7 @@
}
mavenExecutor.executeGoals( determineWorkingDirectory( workingDirectory,
- releaseDescriptor.getScmRelativePathProjectDirectory() ),
+ releaseDescriptor.getScmRelativePathProjectDirectory(), releaseDescriptor.getRootProjectPath() ),
goals, releaseEnvironment, releaseDescriptor.isInteractive(),
additionalArguments, result );
}
@@ -122,17 +122,23 @@
* @param checkoutDirectory The checkout directory as java.io.File
* @param relativePathProjectDirectory The relative path of the project directory within the checkout
* directory or ""
+ * @param rootProjectPath TODO
* @return The working directory
*/
- protected File determineWorkingDirectory( File checkoutDirectory, String relativePathProjectDirectory )
+ protected File determineWorkingDirectory( File checkoutDirectory, String relativePathProjectDirectory, String rootProjectPath )
{
+ File workingDirectory = checkoutDirectory;
+
if ( StringUtils.isNotEmpty( relativePathProjectDirectory ) )
{
- return new File( checkoutDirectory, relativePathProjectDirectory );
+ workingDirectory = new File( checkoutDirectory, relativePathProjectDirectory );
}
- else
+
+ if( StringUtils.isNotEmpty( rootProjectPath ) )
{
- return checkoutDirectory;
+ workingDirectory = new File( workingDirectory, rootProjectPath );
}
+
+ return workingDirectory;
}
}
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java Sun May 24 05:35:37 2009
@@ -26,6 +26,7 @@
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
import org.apache.maven.shared.release.scm.ScmTranslator;
+import org.apache.maven.shared.release.util.ReleaseUtil;
import org.codehaus.plexus.util.StringUtils;
import org.jdom.Element;
import org.jdom.Namespace;
@@ -106,7 +107,7 @@
tagBase = "scm:svn:" + tagBase;
}
- Scm rootScm = rootProject.getScm();
+ Scm rootScm = rootProject.getScm();
if ( scm.getConnection() != null )
{
if ( rootScm.getConnection() != null && scm.getConnection().indexOf( rootScm.getConnection() ) == 0 )
@@ -126,6 +127,8 @@
String value =
translator.translateTagUrl( scm.getConnection(), tag + subDirectoryTag, scmConnectionTag );
+ value = addRootProjectPath( rootProject, value );
+
if ( !value.equals( scm.getConnection() ) )
{
rewriteElement( "connection", value, scmRoot, namespace );
@@ -144,6 +147,8 @@
String value =
translator.translateTagUrl( scm.getDeveloperConnection(), tag + subDirectoryTag, tagBase );
+ value = addRootProjectPath( rootProject, value );
+
if ( !value.equals( scm.getDeveloperConnection() ) )
{
rewriteElement( "developerConnection", value, scmRoot, namespace );
@@ -170,6 +175,7 @@
}
// use original tag base without protocol
String value = translator.translateTagUrl( scm.getUrl(), tag + subDirectoryTag, tagScmUrl );
+ value = addRootProjectPath( rootProject, value );
if ( !value.equals( scm.getUrl() ) )
{
rewriteElement( "url", value, scmRoot, namespace );
@@ -198,6 +204,16 @@
return result;
}
+ private String addRootProjectPath( MavenProject rootProject, String value )
+ {
+ String rootProjectPath = ReleaseUtil.getRootProjectPath( rootProject );
+ if( !StringUtils.isEmpty( rootProjectPath ) )
+ {
+ value = value + rootProjectPath;
+ }
+ return value;
+ }
+
protected Map getOriginalVersionMap( ReleaseDescriptor releaseDescriptor, List reactorProjects )
{
return releaseDescriptor.getOriginalVersions( reactorProjects );
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java Sun May 24 05:35:37 2009
@@ -19,6 +19,8 @@
* under the License.
*/
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmTagParameters;
@@ -35,8 +37,14 @@
import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
+import org.apache.maven.shared.release.util.ReleaseUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
import java.util.List;
/**
@@ -66,18 +74,30 @@
ScmRepository repository;
ScmProvider provider;
- try
+
+ String workingDirectory = releaseDescriptor.getWorkingDirectory();
+ List modules = getModules( releaseDescriptor, workingDirectory );
+ String scmSourceUrl = releaseDescriptor.getScmSourceUrl();
+
+ // determine if project is a flat multi-module
+ if ( modules != null && !modules.isEmpty() )
{
+ workingDirectory = ReleaseUtil.getBaseWorkingDirectory( workingDirectory, modules );
+ releaseDescriptor.setScmSourceUrl( ReleaseUtil.getBaseScmUrl( scmSourceUrl, modules ) );
+ }
+
+ try
+ {
repository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );
-
+
provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
}
catch ( ScmRepositoryException e )
- {
+ {
throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
}
catch ( NoSuchScmProviderException e )
- {
+ {
throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
}
@@ -85,7 +105,7 @@
try
{
// TODO: want includes/excludes?
- ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ) );
+ ScmFileSet fileSet = new ScmFileSet( new File( workingDirectory ) );
String tagName = releaseDescriptor.getScmReleaseLabel();
ScmTagParameters scmTagParameters = new ScmTagParameters( releaseDescriptor.getScmCommentPrefix()
+ " copy for tag " + tagName );
@@ -102,6 +122,10 @@
{
throw new ReleaseExecutionException( "An error is occurred in the tag process: " + e.getMessage(), e );
}
+ finally
+ {
+ revertToOriginalScmSourceUrl( releaseDescriptor, scmSourceUrl );
+ }
if ( !result.isSuccess() )
{
@@ -113,21 +137,81 @@
return relResult;
}
+ private void revertToOriginalScmSourceUrl( ReleaseDescriptor releaseDescriptor, String scmSourceUrl )
+ {
+ if( !scmSourceUrl.equals( releaseDescriptor.getScmSourceUrl() ) )
+ {
+ releaseDescriptor.setScmSourceUrl( scmSourceUrl );
+ }
+ }
+
+ private List getModules( ReleaseDescriptor releaseDescriptor, String workingDirectory )
+ {
+ try
+ {
+ String pomFile = releaseDescriptor.getPomFileName();
+ if ( pomFile == null || "".equals( pomFile.trim() ) )
+ {
+ pomFile = ReleaseUtil.POMv4;
+ }
+
+ String pathToRootPom = workingDirectory + ReleaseUtil.FS + pomFile;
+
+ MavenXpp3Reader reader = new MavenXpp3Reader();
+ Reader in = new FileReader( new File( pathToRootPom ) );
+
+ Model model = reader.read( in );
+
+ return model.getModules();
+ }
+ catch ( FileNotFoundException e )
+ {
+ getLogger().warn( "Pom file not found : " + e.getMessage() );
+ getLogger().warn( "Assuming working directory in release descriptor is the base working directory." );
+
+ }
+ catch ( IOException e )
+ {
+ getLogger().warn( "IO error occurred while reading pom file : " + e.getMessage() );
+ getLogger().warn( "Assuming working directory in release descriptor is the base working directory." );
+ }
+ catch ( XmlPullParserException e )
+ {
+ getLogger().warn( "Error parsing pom file : " + e.getMessage() );
+ getLogger().warn( "Assuming working directory in release descriptor is the base working directory." );
+ }
+
+ return null;
+ }
+
public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
- validateConfiguration( releaseDescriptor );
-
- logInfo( result, "Full run would be tagging " + releaseDescriptor.getWorkingDirectory() + " with label: '" +
+ validateConfiguration( releaseDescriptor );
+
+ String workingDirectory = releaseDescriptor.getWorkingDirectory();
+ List modules = getModules( releaseDescriptor, workingDirectory );
+ String scmSourceUrl = releaseDescriptor.getScmSourceUrl();
+
+ // determine if project is a flat multi-module
+ if ( modules != null && !modules.isEmpty() )
+ {
+ workingDirectory = ReleaseUtil.getBaseWorkingDirectory( workingDirectory, modules );
+ releaseDescriptor.setScmSourceUrl( ReleaseUtil.getBaseScmUrl( scmSourceUrl, modules ) );
+ }
+
+ logInfo( result, "Full run would be tagging " + workingDirectory + " with label: '" +
releaseDescriptor.getScmReleaseLabel() + "'" );
+ revertToOriginalScmSourceUrl( releaseDescriptor, scmSourceUrl );
+
result.setResultCode( ReleaseResult.SUCCESS );
return result;
}
-
+
private static void validateConfiguration( ReleaseDescriptor releaseDescriptor )
throws ReleaseFailureException
{
@@ -135,5 +219,5 @@
{
throw new ReleaseFailureException( "A release label is required for committing" );
}
- }
+ }
}
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java Sun May 24 05:35:37 2009
@@ -25,6 +25,7 @@
import java.util.Iterator;
import java.util.List;
+import org.apache.commons.lang.StringUtils;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
@@ -37,12 +38,17 @@
{
public static final String RELEASE_POMv4 = "release-pom.xml";
- private static final String POMv4 = "pom.xml";
+ public static final String POMv4 = "pom.xml";
/**
* The line separator to use.
*/
public static final String LS = System.getProperty( "line.separator" );
+
+ /**
+ * The path separator to use.
+ */
+ public static final String FS = System.getProperty( "file.separator" );
private ReleaseUtil()
{
@@ -138,5 +144,137 @@
}
return norm;
}
-
+
+ /**
+ * Determines the base working directory with regard to the longest relative path of the modules.
+ *
+ * @param workingDirectory The working directory of the project to be released
+ * @param modules The \<modules\> of the project to be released
+ * @return The base working directory of the project
+ */
+ public static String getBaseWorkingDirectory( String workingDirectory, List modules )
+ {
+ int count = getLongestPathCount( modules );
+ workingDirectory = StringUtils.chomp( workingDirectory, FS );
+
+ while( count > 0 )
+ {
+ int lastSep = workingDirectory.lastIndexOf( FS );
+ workingDirectory = StringUtils.substring( workingDirectory, 0, lastSep );
+ count--;
+ }
+ return workingDirectory;
+ }
+
+ /**
+ * Determines the base scm url with regard to the longest relative path of the modules.
+ *
+ * @param scmUrl The scm source url of the project to be released which is set in the release descriptor.
+ * @param modules The \<modules\> of the project to be released
+ * @return
+ */
+ public static String getBaseScmUrl( String scmUrl, List modules )
+ {
+ int count = getLongestPathCount( modules );
+ scmUrl = StringUtils.chomp( scmUrl, "/" );
+
+ while( count > 0 )
+ {
+ int lastSep = scmUrl.lastIndexOf( "/" );
+ scmUrl = StringUtils.substring( scmUrl, 0, lastSep );
+ count--;
+ }
+ return scmUrl;
+ }
+
+ /**
+ * Returns the common path of the two paths specified.
+ *
+ * @param path1 The first path
+ * @param path2 The second path
+ * @return The common path of the two paths.
+ */
+ public static String getCommonPath( String path1, String path2 )
+ {
+ if ( path2 == null || path2.equals( "" ) )
+ {
+ return path1;
+ }
+ else
+ {
+ int indexDiff = StringUtils.indexOfDifference( path1, path2 );
+ if( indexDiff > 0 )
+ {
+ return path1.substring( 0, indexDiff );
+ }
+ else
+ {
+ return path1;
+ }
+ }
+ }
+
+ private static int getLongestPathCount( List modules )
+ {
+ int count = 0;
+ if( modules == null || modules.isEmpty() )
+ {
+ return 0;
+ }
+
+ for( Iterator iter = modules.iterator(); iter.hasNext(); )
+ {
+ String module = ( String ) iter.next();
+ module = StringUtils.replace( module, "\\", "/" );
+
+ // module is a path
+ if( module.indexOf( '/' ) != -1 )
+ {
+ int tmp = StringUtils.countMatches( module, "/" );
+ if( tmp > count )
+ {
+ count = tmp;
+ }
+ }
+ }
+ return count;
+ }
+
+ /**
+ * Gets the path to the project root. Useful in determining whether the project has a flat structure.
+ *
+ * @param project
+ * @return
+ */
+ public static String getRootProjectPath( MavenProject project )
+ {
+ String relPath = "";
+
+ // module is a flat multi-module project
+ if( getLongestPathCount( project.getModules() ) > 0 )
+ {
+ String projectBaseDir = project.getBasedir().getPath();
+ if( ReleaseUtil.FS.equals( "\\" ) )
+ {
+ projectBaseDir = StringUtils.replace( projectBaseDir, "/", "\\" );
+ }
+ else
+ {
+ projectBaseDir = StringUtils.replace( projectBaseDir, "\\", "/" );
+ }
+
+ String projectPath = "";
+ if( project.getScm() != null )
+ {
+ projectPath =
+ ReleaseUtil.getCommonPath( StringUtils.reverse( StringUtils.chomp( projectBaseDir, ReleaseUtil.FS ) ),
+ StringUtils.reverse( StringUtils.chomp( project.getScm().getConnection(), "/" ) ) );
+ }
+
+
+ relPath = StringUtils.reverse( projectPath );
+ }
+
+ return relPath;
+ }
}
Modified: maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original)
+++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Sun May 24 05:35:37 2009
@@ -42,7 +42,7 @@
<!-- Descriptive Information -->
<field>
<name>name</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The name of this release configuration
@@ -50,7 +50,7 @@
</field>
<field>
<name>description</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The description of this release configuration
@@ -60,7 +60,7 @@
<!-- SCM Information -->
<field>
<name>ScmCommentPrefix</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<defaultValue>[maven-release-manager] </defaultValue>
<description>
@@ -69,7 +69,7 @@
</field>
<field>
<name>scmSourceUrl</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
This is a MavenSCM of where you're going to get the sources to make the release with.
@@ -78,7 +78,7 @@
</field>
<field>
<name>scmTagBase</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
Where you are going to put your tagged sources
@@ -87,7 +87,7 @@
</field>
<field>
<name>scmReleaseLabel</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
tag name: the identifier for the tag.
@@ -96,7 +96,7 @@
</field>
<field>
<name>scmUsername</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The user name to interact with the scm
@@ -104,7 +104,7 @@
</field>
<field>
<name>scmPassword</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The password for the user interacting with the scm
@@ -112,7 +112,7 @@
</field>
<field>
<name>scmPrivateKey</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
Private key for an SSH based SCM repository.
@@ -120,7 +120,7 @@
</field>
<field>
<name>scmPrivateKeyPassPhrase</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
Pass phrase for the private key.
@@ -128,7 +128,7 @@
</field>
<field>
<name>scmUseEditMode</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to use edit mode when making SCM modifications. This setting is disregarded
@@ -137,7 +137,7 @@
</field>
<field>
<name>scmRelativePathProjectDirectory</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
Relative path of the project returned by the checkout command.
@@ -146,7 +146,7 @@
<!-- Maven Information -->
<field>
<name>releaseVersions</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>Map</type>
<association stash.keyType="String">
<type>String</type>
@@ -158,7 +158,7 @@
</field>
<field>
<name>developmentVersions</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>Map</type>
<association stash.keyType="String">
<type>String</type>
@@ -170,7 +170,7 @@
</field>
<field>
<name>resolvedSnapshotDependencies</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>Map</type>
<association stash.keyType="String">
<type>String</type>
@@ -182,7 +182,7 @@
</field>
<field>
<name>updateDependencies</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
@@ -191,7 +191,7 @@
</field>
<field>
<name>useReleaseProfile</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
@@ -200,7 +200,7 @@
</field>
<field>
<name>originalScmInfo</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>Map</type>
<association stash.keyType="String">
<type>String</type>
@@ -212,7 +212,7 @@
</field>
<field>
<name>workingDirectory</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The directory where the release is performed.
@@ -220,7 +220,7 @@
</field>
<field>
<name>checkoutDirectory</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The directory where the tag will be checked out.
@@ -228,7 +228,7 @@
</field>
<field>
<name>completedPhase</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The last completed phase.
@@ -236,7 +236,7 @@
</field>
<field>
<name>addSchema</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
<![CDATA[Whether to add the model schema to the top of the rewritten POM if it wasn't there already.
@@ -245,7 +245,7 @@
</field>
<field>
<name>generateReleasePoms</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to generate release POMs.
@@ -253,7 +253,7 @@
</field>
<field>
<name>autoVersionSubmodules</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to use the parent pom version for submodule verstions.
@@ -261,7 +261,7 @@
</field>
<field>
<name>interactive</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description>
@@ -271,7 +271,7 @@
</field>
<field>
<name>snapshotReleasePluginAllowed</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
@@ -280,7 +280,7 @@
</field>
<field>
<name>additionalArguments</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
Additional arguments to pass to any executed Maven process.
@@ -288,7 +288,7 @@
</field>
<field>
<name>pomFileName</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The file name of the POM to pass to any executed Maven process.
@@ -296,7 +296,7 @@
</field>
<field>
<name>preparationGoals</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The goals to execute in preparation for the release.
@@ -304,7 +304,7 @@
</field>
<field>
<name>performGoals</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
The goals to execute in perform phase for the release.
@@ -312,7 +312,7 @@
</field>
<field>
<name>commitByProject</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
@@ -321,7 +321,7 @@
</field>
<field>
<name>branchCreation</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to create a branch instead of do a release.
@@ -329,7 +329,7 @@
</field>
<field>
<name>updateBranchVersions</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to update branch POM versions.
@@ -337,7 +337,7 @@
</field>
<field>
<name>updateWorkingCopyVersions</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to update working copy POM versions.
@@ -345,7 +345,7 @@
</field>
<field>
<name>updateVersionsToSnapshot</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<description>
Whether to update branch versions to SNAPSHOT.
@@ -353,7 +353,7 @@
</field>
<field>
<name>allowTimestampedSnapshots</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
@@ -363,7 +363,7 @@
</field>
<field>
<name>defaultReleaseVersion</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
Default version to use for the tagged release or the new branch.
@@ -371,7 +371,7 @@
</field>
<field>
<name>defaultDevelopmentVersion</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
Default version to use for new working copy.
@@ -380,7 +380,7 @@
<field>
<name>remoteTagging</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>
@@ -390,13 +390,21 @@
</field>
<field>
<name>scmReleasedPomRevision</name>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<type>String</type>
<description>
NOTE : currently only implemented with svn scm. It contains the revision of the committed released pom to remotely tag
the source code with this revision.
</description>
- </field>
+ </field>
+ <field>
+ <name>rootProjectPath</name>
+ <version>2.0.0+</version>
+ <type>String</type>
+ <description>
+ Path to the root project. Used during release:perform and release:stage of flat multi-module projects.
+ </description>
+ </field>
<!-- Announcement Information
@@ -413,7 +421,7 @@
<!-- Code Segments -->
<codeSegments>
<codeSegment>
- <version>1.0.0</version>
+ <version>1.0.0+</version>
<code><![CDATA[
public static final String DEVELOPMENT_KEY = "dev";
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhaseTest.java Sun May 24 05:35:37 2009
@@ -306,7 +306,17 @@
assertTrue( comparePomFiles( reactorProjects ) );
}
+
+ public void testRewritePomForFlatMultiModule()
+ throws Exception
+ {
+ List reactorProjects = createReactorProjects( "rewrite-for-release/pom-with-parent-flat", "/root-project", true );
+ ReleaseDescriptor config = createConfigurationForPomWithParentAlternateNextVersion( reactorProjects );
+ phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
+
+ assertTrue( comparePomFiles( reactorProjects ) );
+ }
protected ReleaseDescriptor createDescriptorFromProjects( List reactorProjects )
{
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java Sun May 24 05:35:37 2009
@@ -3,6 +3,12 @@
*/
package org.apache.maven.shared.release.util;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.model.Scm;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
/**
@@ -22,5 +28,149 @@
assertNull( ReleaseUtil.getReleasePom( null ) );
assertNull( ReleaseUtil.getStandardPom( null ) );
}
+
+ public void testGetBaseWorkingDirectoryNoModules()
+ throws Exception
+ {
+ assertEquals( "/working/directory/flat-multi-module/project",
+ ReleaseUtil.getBaseWorkingDirectory( "/working/directory/flat-multi-module/project", null ) );
+
+ assertEquals( "/working/directory/flat-multi-module/project",
+ ReleaseUtil.getBaseWorkingDirectory( "/working/directory/flat-multi-module/project", new ArrayList() ) );
+ }
+
+ public void testGetBaseWorkingDirOfFlatMultiModule()
+ throws Exception
+ {
+ List modules = new ArrayList();
+ modules.add( "../core" );
+ modules.add( "../webapp" );
+
+ assertEquals( "/working/directory/flat-multi-module",
+ ReleaseUtil.getBaseWorkingDirectory( "/working/directory/flat-multi-module" + ReleaseUtil.FS +
+ "root-project", modules ) );
+ assertEquals( "/working/directory/flat-multi-module",
+ ReleaseUtil.getBaseWorkingDirectory( "/working/directory/flat-multi-module" + ReleaseUtil.FS +
+ "root-project" + ReleaseUtil.FS, modules ) );
+ }
+ public void testGetBaseWorkingDirectoryOfRegularMultiModule()
+ throws Exception
+ {
+ List modules = new ArrayList();
+ modules.add( "core" );
+ modules.add( "webapp" );
+
+ assertEquals( "/working/directory/flat-multi-module",
+ ReleaseUtil.getBaseWorkingDirectory( "/working/directory/flat-multi-module", modules ) );
+ assertEquals( "/working/directory/flat-multi-module",
+ ReleaseUtil.getBaseWorkingDirectory( "/working/directory/flat-multi-module" + ReleaseUtil.FS,
+ modules ) );
+ }
+
+ public void testGetBaseScmUrlNoModules()
+ throws Exception
+ {
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk",
+ ReleaseUtil.getBaseScmUrl( "scm:svn:http://svn.repo.com/flat-multi-module/trunk", null ) );
+
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk",
+ ReleaseUtil.getBaseScmUrl( "scm:svn:http://svn.repo.com/flat-multi-module/trunk", new ArrayList() ) );
+ }
+
+ public void testGetBaseScmUrlOfFlatMultiModule()
+ throws Exception
+ {
+ List modules = new ArrayList();
+ modules.add( "../core" );
+ modules.add( "../webapp" );
+
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk",
+ ReleaseUtil.getBaseScmUrl( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/root-project",
+ modules ) );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk",
+ ReleaseUtil.getBaseScmUrl( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/root-project/",
+ modules ) );
+ }
+
+ public void testGetBaseScmUrlOfRegularMultiModule()
+ throws Exception
+ {
+ List modules = new ArrayList();
+ modules.add( "core" );
+ modules.add( "webapp" );
+
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk",
+ ReleaseUtil.getBaseScmUrl( "scm:svn:http://svn.repo.com/flat-multi-module/trunk", modules ) );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk",
+ ReleaseUtil.getBaseScmUrl( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/", modules ) );
+ }
+
+ public void testGetRootProjectPathFlatStructure()
+ throws Exception
+ {
+ MavenProject project = new MavenProject()
+ {
+ public List getModules()
+ {
+ List modules = new ArrayList();
+ modules.add( "../core" );
+ modules.add( "../webapp" );
+ modules.add( "../commons" );
+
+ return modules;
+ }
+
+ public File getBasedir()
+ {
+ return new File( "/flat-multi-module/root-project" );
+ }
+
+ public Scm getScm()
+ {
+ Scm scm = new Scm();
+ scm.setConnection( "scm:svn:file://localhost/target/svnroot/flat-multi-module/trunk/root-project" );
+
+ return scm;
+ }
+ };
+
+ assertEquals( "/root-project", ReleaseUtil.getRootProjectPath( project ) );
+ }
+
+ public void testGetRootProjectPathRegularMultiModuleStructure()
+ throws Exception
+ {
+ MavenProject project = new MavenProject()
+ {
+ Scm scm = new Scm();
+
+ public List getModules()
+ {
+ List modules = new ArrayList();
+ modules.add( "core" );
+ modules.add( "webapp" );
+ modules.add( "commons" );
+
+ return modules;
+ }
+
+ public File getBasedir()
+ {
+ return new File( "/regular-multi-module" );
+ }
+
+ public Scm getScm()
+ {
+ scm.setConnection( "scm:svn:file://localhost/target/svnroot/regular-multi-module/trunk" );
+
+ return scm;
+ }
+ };
+
+ assertEquals( "", ReleaseUtil.getRootProjectPath( project ) );
+
+ project.getScm().setConnection( "scm:svn:file://localhost/target/svnroot/regular-multi-module/trunk/" );
+ assertEquals( "", ReleaseUtil.getRootProjectPath( project ) );
+ }
}
Added: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/expected-pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/expected-pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/expected-pom.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/expected-pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,33 @@
+<!--
+ ~ Copyright 2009 The Apache Software Foundation.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>groupId</groupId>
+ <artifactId>artifactId</artifactId>
+ <version>1.0</version>
+ <packaging>pom</packaging>
+
+ <scm>
+ <connection>scm:svn:file://localhost/tmp/scm-repo/tags/release-label/root-project</connection>
+ <developerConnection>scm:svn:file://localhost/tmp/scm-repo/tags/release-label/root-project</developerConnection>
+ <url>file://localhost/tmp/scm-repo/tags/release-label/root-project</url>
+ </scm>
+
+ <modules>
+ <module>../subproject1</module>
+ </modules>
+</project>
Added: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/pom.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/root-project/pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,33 @@
+<!--
+ ~ Copyright 2009 The Apache Software Foundation.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>groupId</groupId>
+ <artifactId>artifactId</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <scm>
+ <connection>scm:svn:file://localhost/tmp/scm-repo/trunk/root-project</connection>
+ <developerConnection>scm:svn:file://localhost/tmp/scm-repo/trunk/root-project</developerConnection>
+ <url>file://localhost/tmp/scm-repo/trunk/root-project</url>
+ </scm>
+
+ <modules>
+ <module>../subproject1</module>
+ </modules>
+</project>
Added: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/expected-pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/expected-pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/expected-pom.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/expected-pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,27 @@
+<!--
+ ~ Copyright 2009 The Apache Software Foundation.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>groupId</groupId>
+ <artifactId>artifactId</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <artifactId>subproject1</artifactId>
+ <version>2.0</version>
+</project>
Added: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/pom.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-parent-flat/subproject1/pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,27 @@
+<!--
+ ~ Copyright 2009 The Apache Software Foundation.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>groupId</groupId>
+ <artifactId>artifactId</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>subproject1</artifactId>
+ <version>2.0-SNAPSHOT</version>
+</project>
Modified: maven/release/trunk/maven-release-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/pom.xml?rev=778088&r1=778087&r2=778088&view=diff
==============================================================================
--- maven/release/trunk/maven-release-plugin/pom.xml (original)
+++ maven/release/trunk/maven-release-plugin/pom.xml Sun May 24 05:35:37 2009
@@ -168,7 +168,13 @@
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<setupIncludes>
<setupInclude>maven-scm-provider-*/pom.xml</setupInclude>
- </setupIncludes>
+ </setupIncludes>
+ <pomIncludes>
+ <pomInclude>forked-basic/pom.xml</pomInclude>
+ <pomInclude>invoker-basic/pom.xml</pomInclude>
+ <pomInclude>flat-multi-module/parent-project/pom.xml</pomInclude>
+ <pomInclude>regular-multi-module/pom.xml</pomInclude>
+ </pomIncludes>
<pomExcludes>
<pomExclude>project/**</pomExclude>
</pomExcludes>
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/pom.xml (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,40 @@
+<?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>
+ <parent>
+ <artifactId>parent-project</artifactId>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <artifactId>module-a</artifactId>
+ <name>module-a</name>
+ <version>1.0-SNAPSHOT</version>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java Sun May 24 05:35:37 2009
@@ -0,0 +1,13 @@
+package org.apache.maven.plugin.release.module.a;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java Sun May 24 05:35:37 2009
@@ -0,0 +1,38 @@
+package org.apache.maven.plugin.release.module.a;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/pom.xml (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,40 @@
+<?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>
+ <parent>
+ <artifactId>parent-project</artifactId>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <artifactId>module-b</artifactId>
+ <name>module-b</name>
+ <version>1.0-SNAPSHOT</version>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java Sun May 24 05:35:37 2009
@@ -0,0 +1,13 @@
+package org.apache.maven.plugin.release.module.b;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java Sun May 24 05:35:37 2009
@@ -0,0 +1,38 @@
+package org.apache.maven.plugin.release.module.b;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/pom.xml (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/pom.xml Sun May 24 05:35:37 2009
@@ -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</groupId>
+ <artifactId>parent-project</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>parent-project</name>
+ <url>http://maven.apache.org</url>
+ <scm>
+ <connection>scm:svn:file://localhost/${project.file.parentFile.parentFile}/target/svnroot/flat-multi-module/trunk/parent-project</connection>
+ <developerConnection>scm:svn:file://localhost/${project.file.parentFile.parentFile}/target/svnroot/flat-multi-module/trunk/parent-project</developerConnection>
+ </scm>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <modules>
+ <module>../module-a</module>
+ <module>../module-b</module>
+ </modules>
+</project>
Added: maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/verify.bsh
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/verify.bsh?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/verify.bsh (added)
+++ maven/release/trunk/maven-release-plugin/src/it/flat-multi-module/parent-project/verify.bsh Sun May 24 05:35:37 2009
@@ -0,0 +1,38 @@
+import java.io.*;
+import java.util.*;
+import java.util.regex.*;
+
+try
+{
+ File buildLog = new File( basedir, "build.log" );
+
+ System.out.println( "Checking logs.." );
+
+ StringBuffer data = new StringBuffer( 1024 );
+ BufferedReader reader = new BufferedReader( new FileReader( buildLog ) );
+ char[] buf = new char[1024];
+ int numRead = 0;
+ while ( ( numRead = reader.read( buf ) ) != -1 )
+ {
+ String readData = String.valueOf( buf, 0, numRead );
+ data.append( readData );
+ buf = new char[1024];
+ }
+ reader.close();
+ String contents = data.toString();
+
+ String expected = "flat-multi-module with label: 'parent-project-1.0'";
+
+ if( contents.indexOf( expected ) != -1 )
+ {
+ return true;
+ }
+}
+catch( Throwable t )
+{
+ t.printStackTrace();
+ return false;
+}
+
+System.out.println( "FAILED!" );
+return false;
\ No newline at end of file
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/pom.xml (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,21 @@
+<?xml version="1.0"?><project>
+ <parent>
+ <artifactId>regular-multi-module-project</artifactId>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <artifactId>module-a</artifactId>
+ <name>module-a</name>
+ <version>1.0-SNAPSHOT</version>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/main/java/org/apache/maven/plugin/release/module/a/App.java Sun May 24 05:35:37 2009
@@ -0,0 +1,13 @@
+package org.apache.maven.plugin.release.module.a;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-a/src/test/java/org/apache/maven/plugin/release/module/a/AppTest.java Sun May 24 05:35:37 2009
@@ -0,0 +1,38 @@
+package org.apache.maven.plugin.release.module.a;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/pom.xml (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/pom.xml Sun May 24 05:35:37 2009
@@ -0,0 +1,21 @@
+<?xml version="1.0"?><project>
+ <parent>
+ <artifactId>regular-multi-module-project</artifactId>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.plugin.release</groupId>
+ <artifactId>module-b</artifactId>
+ <name>module-b</name>
+ <version>1.0-SNAPSHOT</version>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/main/java/org/apache/maven/plugin/release/module/b/App.java Sun May 24 05:35:37 2009
@@ -0,0 +1,13 @@
+package org.apache.maven.plugin.release.module.b;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/module-b/src/test/java/org/apache/maven/plugin/release/module/b/AppTest.java Sun May 24 05:35:37 2009
@@ -0,0 +1,38 @@
+package org.apache.maven.plugin.release.module.b;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/pom.xml?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/pom.xml (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/pom.xml Sun May 24 05:35:37 2009
@@ -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</groupId>
+ <artifactId>regular-multi-module-project</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>parent-project</name>
+ <url>http://maven.apache.org</url>
+ <scm>
+ <connection>scm:svn:file://localhost/${project.file.parentFile.parentFile}/target/svnroot/flat-multi-module/trunk/</connection>
+ <developerConnection>scm:svn:file://localhost/${project.file.parentFile.parentFile}/target/svnroot/flat-multi-module/trunk/</developerConnection>
+ </scm>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <modules>
+ <module>module-a</module>
+ <module>module-b</module>
+ </modules>
+</project>
Added: maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/verify.bsh
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/verify.bsh?rev=778088&view=auto
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/verify.bsh (added)
+++ maven/release/trunk/maven-release-plugin/src/it/regular-multi-module/verify.bsh Sun May 24 05:35:37 2009
@@ -0,0 +1,38 @@
+import java.io.*;
+import java.util.*;
+import java.util.regex.*;
+
+try
+{
+ File buildLog = new File( basedir, "build.log" );
+
+ System.out.println( "Checking logs.." );
+
+ StringBuffer data = new StringBuffer( 1024 );
+ BufferedReader reader = new BufferedReader( new FileReader( buildLog ) );
+ char[] buf = new char[1024];
+ int numRead = 0;
+ while ( ( numRead = reader.read( buf ) ) != -1 )
+ {
+ String readData = String.valueOf( buf, 0, numRead );
+ data.append( readData );
+ buf = new char[1024];
+ }
+ reader.close();
+ String contents = data.toString();
+
+ String expected = "regular-multi-module with label: 'regular-multi-module-project-1.0'";
+
+ if( contents.indexOf( expected ) != -1 )
+ {
+ return true;
+ }
+}
+catch( Throwable t )
+{
+ t.printStackTrace();
+ return false;
+}
+
+System.out.println( "FAILED!" );
+return false;
\ No newline at end of file
Re: svn commit: r778088 [1/2] - in /maven/release/trunk: maven-release-manager/
maven-release-manager/src/main/java/org/apache/maven/shared/release/config/
maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/
maven-release-manager/src...
Posted by Benjamin Bentmann <be...@udo.edu>.
Hi Maria,
> Author: oching
> Date: Sun May 24 05:35:37 2009
> New Revision: 778088
>
> URL: http://svn.apache.org/viewvc?rev=778088&view=rev
> Log:
> [MRELEASE-261]/[MRELEASE-322]/[MRELEASE-225]/[MRELEASE-336]
> o fix releasing of projects with flat structure
> o determine base working directory and the base scm url based on the root project's working dir and scm url, and the relative path of it's modules
> o added unit tests and integration tests
This seems to break the tests on Windows [0], can you review the changes
please?
Benjamin
[0]
https://grid.sonatype.org/ci/job/Maven-release-trunk/jdk=1.5,label=windows/53/console
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org