You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2010/01/26 15:43:07 UTC
svn commit: r903243 [1/2] - in /maven/release/trunk:
maven-release-manager/src/main/java/org/apache/maven/shared/release/config/
maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/
maven-release-manager/src/main/java/org/apache/m...
Author: brett
Date: Tue Jan 26 14:43:06 2010
New Revision: 903243
URL: http://svn.apache.org/viewvc?rev=903243&view=rev
Log:
[MRELEASE-261] adjust the mechanism of deciding the base directories, using the common root of reactor projects. Add tests for projects that have multiple directory levels in their immediate modules list.
Added:
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/expected-pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/expected-pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/sub/
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/sub/subproject2/
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/sub/subproject2/expected-pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/subproject1/expected-pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/sub/subproject2/pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/subproject1/pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/subproject1/
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/subproject1/expected-pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/subproject1/expected-pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/subproject1/pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/subproject1/pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multimodule-with-deep-subprojects/
maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multimodule-with-deep-subprojects/pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multiple-poms/pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multimodule-with-deep-subprojects/sub/
maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multimodule-with-deep-subprojects/sub/subproject2/
maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multimodule-with-deep-subprojects/sub/subproject2/pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multiple-poms/subproject2/pom.xml
maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multimodule-with-deep-subprojects/subproject1/
maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multimodule-with-deep-subprojects/subproject1/pom.xml
- copied, changed from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/scm-commit/multiple-poms/subproject1/pom.xml
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.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/RewritePomVersionsPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.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/scm/DefaultScmRepositoryConfigurator.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmRepositoryConfigurator.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/phase/ScmTagPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.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/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=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java Tue Jan 26 14:43:06 2010
@@ -22,9 +22,9 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
-import java.util.Map.Entry;
import org.apache.maven.model.Scm;
@@ -66,8 +66,6 @@
mergeOverride( mergeInto.getScmPrivateKeyPassPhrase(), toBeMerged.getScmPrivateKeyPassPhrase() ) );
mergeInto.setScmCommentPrefix(
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/AbstractRewritePomsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java?rev=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java Tue Jan 26 14:43:06 2010
@@ -88,7 +88,8 @@
*/
private String pomSuffix;
- public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List reactorProjects )
+ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
@@ -100,8 +101,8 @@
return result;
}
- private void transform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List reactorProjects,
- boolean simulate, ReleaseResult result )
+ private void transform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List reactorProjects, boolean simulate, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
@@ -114,8 +115,9 @@
}
}
- private void transformProject( MavenProject project, ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
- List reactorProjects, boolean simulate, ReleaseResult result )
+ private void transformProject( MavenProject project, ReleaseDescriptor releaseDescriptor,
+ ReleaseEnvironment releaseEnvironment, List reactorProjects, boolean simulate,
+ ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
Document document;
@@ -147,7 +149,9 @@
{
intro = content.substring( 0, index );
outtro = content.substring( index + w.toString().length() );
- } else {
+ }
+ else
+ {
/*
* NOTE: Due to whitespace, attribute reordering or entity expansion the above indexOf test can easily
* fail. So let's try harder. Maybe some day, when JDOM offers a StaxBuilder and this builder employes
@@ -187,7 +191,8 @@
ScmProvider provider;
try
{
- scmRepository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() );
+ scmRepository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor,
+ releaseEnvironment.getSettings() );
provider = scmRepositoryConfigurator.getRepositoryProvider( scmRepository );
}
@@ -207,14 +212,13 @@
if ( simulate )
{
- File outputFile =
- new File( pomFile.getParentFile(), pomFile.getName() + "." + pomSuffix );
+ File outputFile = new File( pomFile.getParentFile(), pomFile.getName() + "." + pomSuffix );
writePom( outputFile, document, releaseDescriptor, project.getModelVersion(), intro, outtro );
}
else
{
- writePom( pomFile, document, releaseDescriptor, project.getModelVersion(), intro, outtro,
- scmRepository, provider );
+ writePom( pomFile, document, releaseDescriptor, project.getModelVersion(), intro, outtro, scmRepository,
+ provider );
}
}
@@ -297,7 +301,7 @@
}
transformScm( project, rootElement, namespace, releaseDescriptor, projectId, scmRepository, result,
- ReleaseUtil.getRootProject( reactorProjects ) );
+ ReleaseUtil.getCommonBasedir( reactorProjects ) );
}
/**
@@ -305,7 +309,7 @@
* comments around the original text value.
*
* @param element The element to update, must not be <code>null</code>.
- * @param value The text string to set, must not be <code>null</code>.
+ * @param value The text string to set, must not be <code>null</code>.
*/
private void rewriteValue( Element element, String value )
{
@@ -508,8 +512,9 @@
XPath xpath;
if ( !StringUtils.isEmpty( dependencyRoot.getNamespaceURI() ) )
{
- xpath = XPath.newInstance( "./pom:" + groupTagName + "/pom:" + tagName + "[normalize-space(pom:groupId)='" + groupId +
- "' and normalize-space(pom:artifactId)='" + artifactId + "']" );
+ xpath = XPath.newInstance(
+ "./pom:" + groupTagName + "/pom:" + tagName + "[normalize-space(pom:groupId)='" + groupId +
+ "' and normalize-space(pom:artifactId)='" + artifactId + "']" );
xpath.addNamespace( "pom", dependencyRoot.getNamespaceURI() );
}
else
@@ -625,11 +630,11 @@
// change the property only if the property is the same as what's in the reactor
rewriteValue( property, mappedVersion );
}
- else if ( mappedVersion.equals( propertyValue ))
+ else if ( mappedVersion.equals( propertyValue ) )
{
- //this property may have been updated during processing a sibling.
+ //this property may have been updated during processing a sibling.
logInfo( result, "Ignoring artifact version update for expression: " +
- mappedVersion+" because it is already updated." );
+ mappedVersion + " because it is already updated." );
}
else if ( !mappedVersion.equals( versionText ) )
{
@@ -644,11 +649,11 @@
else
{
// the value of the expression conflicts with what the user wanted to release
- throw new ReleaseFailureException( "The artifact (" + key +
- ") requires a " + "different version (" + mappedVersion +
- ") than what is found (" + propertyValue +
- ") for the expression (" + expression + ") in the " + "project (" +
- projectId + ")." );
+ throw new ReleaseFailureException(
+ "The artifact (" + key + ") requires a " + "different version (" +
+ mappedVersion + ") than what is found (" + propertyValue +
+ ") for the expression (" + expression + ") in the " +
+ "project (" + projectId + ")." );
}
}
}
@@ -766,7 +771,8 @@
}
}
- public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List reactorProjects )
+ public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
@@ -816,7 +822,7 @@
protected abstract void transformScm( MavenProject project, Element rootElement, Namespace namespace,
ReleaseDescriptor releaseDescriptor, String projectId,
- ScmRepository scmRepository, ReleaseResult result, MavenProject rootProject )
+ ScmRepository scmRepository, ReleaseResult result, String commonBasedir )
throws ReleaseExecutionException;
protected String getOriginalResolvedSnapshotVersion( String artifactVersionlessKey, Map resolvedSnapshots )
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=903243&r1=903242&r2=903243&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 Tue Jan 26 14:43:06 2010
@@ -19,6 +19,10 @@
* under the License.
*/
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.maven.shared.release.ReleaseExecutionException;
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
@@ -28,10 +32,6 @@
import org.apache.maven.shared.release.exec.MavenExecutorException;
import org.codehaus.plexus.util.StringUtils;
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* Run the integration tests for the project to verify that it builds before committing.
*
@@ -50,8 +50,7 @@
/**
* @deprecated Use {@link AbstractRunGoalsPhase#execute(ReleaseDescriptor, ReleaseEnvironment, File, String)} instead.
*/
- public ReleaseResult execute( ReleaseDescriptor releaseDescriptor,
- File workingDirectory,
+ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, File workingDirectory,
String additionalArguments )
throws ReleaseExecutionException
{
@@ -71,15 +70,17 @@
{
logInfo( result, "Executing goals '" + goals + "'..." );
- MavenExecutor mavenExecutor = (MavenExecutor) mavenExecutors.get( releaseEnvironment.getMavenExecutorId() );
+ MavenExecutor mavenExecutor =
+ (MavenExecutor) mavenExecutors.get( releaseEnvironment.getMavenExecutorId() );
if ( mavenExecutor == null )
{
- throw new ReleaseExecutionException( "Cannot find Maven executor with id: " + releaseEnvironment.getMavenExecutorId() );
+ throw new ReleaseExecutionException(
+ "Cannot find Maven executor with id: " + releaseEnvironment.getMavenExecutorId() );
}
mavenExecutor.executeGoals( determineWorkingDirectory( workingDirectory,
- releaseDescriptor.getScmRelativePathProjectDirectory(), releaseDescriptor.getRootProjectPath() ),
+ releaseDescriptor.getScmRelativePathProjectDirectory() ),
goals, releaseEnvironment, releaseDescriptor.isInteractive(),
additionalArguments, result );
}
@@ -122,23 +123,17 @@
* @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, String rootProjectPath )
+ protected File determineWorkingDirectory( File checkoutDirectory, String relativePathProjectDirectory )
{
File workingDirectory = checkoutDirectory;
-
+
if ( StringUtils.isNotEmpty( relativePathProjectDirectory ) )
{
workingDirectory = new File( checkoutDirectory, relativePathProjectDirectory );
}
-
- if( StringUtils.isNotEmpty( rootProjectPath ) )
- {
- workingDirectory = new File( workingDirectory, rootProjectPath );
- }
-
+
return workingDirectory;
}
}
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java?rev=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java Tue Jan 26 14:43:06 2010
@@ -19,6 +19,9 @@
* under the License.
*/
+import java.util.List;
+import java.util.Map;
+
import org.apache.maven.project.MavenProject;
import org.apache.maven.scm.repository.ScmRepository;
import org.apache.maven.shared.release.ReleaseExecutionException;
@@ -27,9 +30,6 @@
import org.jdom.Element;
import org.jdom.Namespace;
-import java.util.List;
-import java.util.Map;
-
/**
* Rewrite POMs for future development
*
@@ -41,7 +41,7 @@
protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
ReleaseDescriptor releaseDescriptor, String projectId, ScmRepository scmRepository,
- ReleaseResult result, MavenProject rootProject )
+ ReleaseResult result, String commonBasedir )
throws ReleaseExecutionException
{
// We are only updating versions no mods to scm needed
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java?rev=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java Tue Jan 26 14:43:06 2010
@@ -19,6 +19,9 @@
* under the License.
*/
+import java.util.List;
+import java.util.Map;
+
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.model.Scm;
import org.apache.maven.project.MavenProject;
@@ -26,12 +29,10 @@
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.jdom.Element;
import org.jdom.Namespace;
-import java.util.List;
-import java.util.Map;
-
/**
* Rewrite POMs for branch.
*
@@ -48,7 +49,7 @@
protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
ReleaseDescriptor releaseDescriptor, String projectId, ScmRepository scmRepository,
- ReleaseResult result, MavenProject rootProject )
+ ReleaseResult result, String commonBasedir )
{
// If SCM is null in original model, it is inherited, no mods needed
if ( project.getScm() != null )
@@ -58,7 +59,7 @@
{
releaseDescriptor.mapOriginalScmInfo( projectId, project.getScm() );
- translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result, rootProject );
+ translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result, commonBasedir );
}
else
{
@@ -77,7 +78,7 @@
scmRoot.addContent( "\n " );
if ( translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result,
- rootProject ) )
+ commonBasedir ) )
{
rootElement.addContent( "\n " ).addContent( scmRoot ).addContent( "\n" );
}
@@ -89,7 +90,7 @@
private boolean translateScm( MavenProject project, ReleaseDescriptor releaseDescriptor, Element scmRoot,
Namespace namespace, ScmRepository scmRepository, ReleaseResult relResult,
- MavenProject rootProject )
+ String commonBasedir )
{
ScmTranslator translator = (ScmTranslator) scmTranslators.get( scmRepository.getProvider() );
boolean result = false;
@@ -98,7 +99,6 @@
Scm scm = project.getScm();
String branchName = releaseDescriptor.getScmReleaseLabel();
String branchBase = releaseDescriptor.getScmBranchBase();
- String subDirectoryBranch = "";
// TODO: svn utils should take care of prepending this
if ( branchBase != null )
@@ -106,13 +106,18 @@
branchBase = "scm:svn:" + branchBase;
}
- Scm rootScm = rootProject.getScm();
+ int count =
+ ReleaseUtil.getBaseWorkingDirectoryParentCount( commonBasedir, project.getBasedir().getAbsolutePath() );
if ( scm.getConnection() != null )
{
- if ( rootScm.getConnection() != null && scm.getConnection().indexOf( rootScm.getConnection() ) == 0 )
+ String rootUrl = ReleaseUtil.realignScmUrl( count, scm.getConnection() );
+
+ String subDirectoryBranch = scm.getConnection().substring( rootUrl.length() );
+ if ( !subDirectoryBranch.startsWith( "/" ) )
{
- subDirectoryBranch = scm.getConnection().substring( rootScm.getConnection().length() );
+ subDirectoryBranch = "/" + subDirectoryBranch;
}
+
String value =
translator.translateBranchUrl( scm.getConnection(), branchName + subDirectoryBranch, branchBase );
if ( !value.equals( scm.getConnection() ) )
@@ -124,14 +129,17 @@
if ( scm.getDeveloperConnection() != null )
{
- if ( rootScm.getDeveloperConnection() != null &&
- scm.getDeveloperConnection().indexOf( rootScm.getDeveloperConnection() ) == 0 )
+ String rootUrl = ReleaseUtil.realignScmUrl( count, scm.getDeveloperConnection() );
+
+ String subDirectoryBranch = scm.getDeveloperConnection().substring( rootUrl.length() );
+ if ( !subDirectoryBranch.startsWith( "/" ) )
{
- subDirectoryBranch =
- scm.getDeveloperConnection().substring( rootScm.getDeveloperConnection().length() );
+ subDirectoryBranch = "/" + subDirectoryBranch;
}
+
String value =
- translator.translateBranchUrl( scm.getDeveloperConnection(), branchName + subDirectoryBranch, branchBase );
+ translator.translateBranchUrl( scm.getDeveloperConnection(), branchName + subDirectoryBranch,
+ branchBase );
if ( !value.equals( scm.getDeveloperConnection() ) )
{
rewriteElement( "developerConnection", value, scmRoot, namespace );
@@ -141,13 +149,17 @@
if ( scm.getUrl() != null )
{
- if ( rootScm.getUrl() != null && scm.getUrl().indexOf( rootScm.getUrl() ) == 0 )
+ String rootUrl = ReleaseUtil.realignScmUrl( count, scm.getUrl() );
+
+ String subDirectoryBranch = scm.getUrl().substring( rootUrl.length() );
+ if ( !subDirectoryBranch.startsWith( "/" ) )
{
- subDirectoryBranch = scm.getUrl().substring( rootScm.getUrl().length() );
+ subDirectoryBranch = "/" + subDirectoryBranch;
}
+
// use original branch base without protocol
String value = translator.translateBranchUrl( scm.getUrl(), branchName + subDirectoryBranch,
- releaseDescriptor.getScmBranchBase() );
+ releaseDescriptor.getScmBranchBase() );
if ( !value.equals( scm.getUrl() ) )
{
rewriteElement( "url", value, scmRoot, namespace );
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java?rev=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java Tue Jan 26 14:43:06 2010
@@ -19,6 +19,9 @@
* under the License.
*/
+import java.util.List;
+import java.util.Map;
+
import org.apache.maven.model.Scm;
import org.apache.maven.project.MavenProject;
import org.apache.maven.scm.repository.ScmRepository;
@@ -29,9 +32,6 @@
import org.jdom.Element;
import org.jdom.Namespace;
-import java.util.List;
-import java.util.Map;
-
/**
* Rewrite POMs for future development
*
@@ -47,7 +47,7 @@
protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
ReleaseDescriptor releaseDescriptor, String projectId, ScmRepository scmRepository,
- ReleaseResult result, MavenProject rootProject )
+ ReleaseResult result, String commonBasedir )
throws ReleaseExecutionException
{
// If SCM is null in original model, it is inherited, no mods needed
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=903243&r1=903242&r2=903243&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 Tue Jan 26 14:43:06 2010
@@ -19,6 +19,9 @@
* under the License.
*/
+import java.util.List;
+import java.util.Map;
+
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.model.Scm;
import org.apache.maven.project.MavenProject;
@@ -31,9 +34,6 @@
import org.jdom.Element;
import org.jdom.Namespace;
-import java.util.List;
-import java.util.Map;
-
/**
* Rewrite POMs for release.
*
@@ -49,7 +49,7 @@
protected void transformScm( MavenProject project, Element rootElement, Namespace namespace,
ReleaseDescriptor releaseDescriptor, String projectId, ScmRepository scmRepository,
- ReleaseResult result, MavenProject rootProject )
+ ReleaseResult result, String commonBasedir )
{
// If SCM is null in original model, it is inherited, no mods needed
if ( project.getScm() != null )
@@ -59,7 +59,7 @@
{
releaseDescriptor.mapOriginalScmInfo( projectId, project.getScm() );
- translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result, rootProject );
+ translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result, commonBasedir );
}
else
{
@@ -78,7 +78,7 @@
scmRoot.addContent( "\n " );
if ( translateScm( project, releaseDescriptor, scmRoot, namespace, scmRepository, result,
- rootProject ) )
+ commonBasedir ) )
{
rootElement.addContent( "\n " ).addContent( scmRoot ).addContent( "\n" );
}
@@ -90,7 +90,7 @@
private boolean translateScm( MavenProject project, ReleaseDescriptor releaseDescriptor, Element scmRoot,
Namespace namespace, ScmRepository scmRepository, ReleaseResult relResult,
- MavenProject rootProject )
+ String commonBasedir )
{
ScmTranslator translator = (ScmTranslator) scmTranslators.get( scmRepository.getProvider() );
boolean result = false;
@@ -99,7 +99,6 @@
Scm scm = project.getScm();
String tag = releaseDescriptor.getScmReleaseLabel();
String tagBase = releaseDescriptor.getScmTagBase();
- String subDirectoryTag = "";
// TODO: svn utils should take care of prepending this
if ( tagBase != null )
@@ -107,13 +106,18 @@
tagBase = "scm:svn:" + tagBase;
}
- Scm rootScm = rootProject.getScm();
+ int count =
+ ReleaseUtil.getBaseWorkingDirectoryParentCount( commonBasedir, project.getBasedir().getAbsolutePath() );
if ( scm.getConnection() != null )
{
- if ( rootScm.getConnection() != null && scm.getConnection().indexOf( rootScm.getConnection() ) == 0 )
+ String rootUrl = ReleaseUtil.realignScmUrl( count, scm.getConnection() );
+
+ String subDirectoryTag = scm.getConnection().substring( rootUrl.length() );
+ if ( !subDirectoryTag.startsWith( "/" ) )
{
- subDirectoryTag = scm.getConnection().substring( getLengthOfRootScmConnectionUrl( rootScm.getConnection() ) );
+ subDirectoryTag = "/" + subDirectoryTag;
}
+
String scmConnectionTag = tagBase;
if ( scmConnectionTag != null )
{
@@ -127,8 +131,6 @@
String value =
translator.translateTagUrl( scm.getConnection(), tag + subDirectoryTag, scmConnectionTag );
- value = addRootProjectPath( rootProject, value );
-
if ( !value.equals( scm.getConnection() ) )
{
rewriteElement( "connection", value, scmRoot, namespace );
@@ -138,17 +140,17 @@
if ( scm.getDeveloperConnection() != null )
{
- if ( rootScm.getDeveloperConnection() != null &&
- scm.getDeveloperConnection().indexOf( rootScm.getDeveloperConnection() ) == 0 )
+ String rootUrl = ReleaseUtil.realignScmUrl( count, scm.getDeveloperConnection() );
+
+ String subDirectoryTag = scm.getDeveloperConnection().substring( rootUrl.length() );
+ if ( !subDirectoryTag.startsWith( "/" ) )
{
- subDirectoryTag =
- scm.getDeveloperConnection().substring( getLengthOfRootScmConnectionUrl( rootScm.getDeveloperConnection() ) );
+ subDirectoryTag = "/" + subDirectoryTag;
}
+
String value =
translator.translateTagUrl( scm.getDeveloperConnection(), tag + subDirectoryTag, tagBase );
- value = addRootProjectPath( rootProject, value );
-
if ( !value.equals( scm.getDeveloperConnection() ) )
{
rewriteElement( "developerConnection", value, scmRoot, namespace );
@@ -158,9 +160,12 @@
if ( scm.getUrl() != null )
{
- if ( rootScm.getUrl() != null && scm.getUrl().indexOf( rootScm.getUrl() ) == 0 )
+ String rootUrl = ReleaseUtil.realignScmUrl( count, scm.getUrl() );
+
+ String subDirectoryTag = scm.getUrl().substring( rootUrl.length() );
+ if ( !subDirectoryTag.startsWith( "/" ) )
{
- subDirectoryTag = scm.getUrl().substring( getLengthOfRootScmConnectionUrl( rootScm.getUrl() ) );
+ subDirectoryTag = "/" + subDirectoryTag;
}
String tagScmUrl = tagBase;
@@ -175,7 +180,6 @@
}
// 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 );
@@ -204,16 +208,6 @@
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 );
@@ -279,16 +273,4 @@
return StringUtils.replace( urlPath, trunkPath.substring( i ), tagPath.substring( i ) );
}
}
-
- private int getLengthOfRootScmConnectionUrl( String rootScmConnectionUrl )
- {
- if( rootScmConnectionUrl.endsWith( "/" ) )
- {
- return rootScmConnectionUrl.length() - 1;
- }
- else
- {
- return rootScmConnectionUrl.length();
- }
- }
}
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=903243&r1=903242&r2=903243&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 Tue Jan 26 14:43:06 2010
@@ -20,13 +20,8 @@
*/
import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.Reader;
import java.util.List;
-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;
@@ -44,9 +39,6 @@
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.IOUtil;
-import org.codehaus.plexus.util.ReaderFactory;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
/**
* Tag the SCM repository after committing the release.
@@ -64,7 +56,8 @@
*/
private ScmRepositoryConfigurator scmRepositoryConfigurator;
- public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List reactorProjects )
+ public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult relResult = new ReleaseResult();
@@ -73,23 +66,17 @@
logInfo( relResult, "Tagging release with the label " + releaseDescriptor.getScmReleaseLabel() + "..." );
+ ReleaseDescriptor basedirAlignedReleaseDescriptor =
+ ReleaseUtil.createBasedirAlignedReleaseDescriptor( releaseDescriptor, reactorProjects );
+
ScmRepository repository;
ScmProvider provider;
-
- 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() );
+ repository =
+ scmRepositoryConfigurator.getConfiguredRepository( basedirAlignedReleaseDescriptor.getScmSourceUrl(),
+ releaseDescriptor,
+ releaseEnvironment.getSettings() );
provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
}
@@ -106,16 +93,18 @@
try
{
// TODO: want includes/excludes?
- ScmFileSet fileSet = new ScmFileSet( new File( workingDirectory ) );
+ ScmFileSet fileSet = new ScmFileSet( new File( basedirAlignedReleaseDescriptor.getWorkingDirectory() ) );
String tagName = releaseDescriptor.getScmReleaseLabel();
- ScmTagParameters scmTagParameters = new ScmTagParameters( releaseDescriptor.getScmCommentPrefix()
- + " copy for tag " + tagName );
+ ScmTagParameters scmTagParameters =
+ new ScmTagParameters( releaseDescriptor.getScmCommentPrefix() + " copy for tag " + tagName );
scmTagParameters.setRemoteTagging( releaseDescriptor.isRemoteTagging() );
scmTagParameters.setScmRevision( releaseDescriptor.getScmReleasedPomRevision() );
- if (getLogger().isDebugEnabled())
+ if ( getLogger().isDebugEnabled() )
{
- getLogger().debug( "ScmTagPhase :: scmTagParameters remotingTag " + releaseDescriptor.isRemoteTagging() );
- getLogger().debug( "ScmTagPhase :: scmTagParameters scmRevision " + releaseDescriptor.getScmReleasedPomRevision() );
+ getLogger().debug(
+ "ScmTagPhase :: scmTagParameters remotingTag " + releaseDescriptor.isRemoteTagging() );
+ getLogger().debug(
+ "ScmTagPhase :: scmTagParameters scmRevision " + releaseDescriptor.getScmReleasedPomRevision() );
}
result = provider.tag( repository, fileSet, tagName, scmTagParameters );
}
@@ -123,10 +112,6 @@
{
throw new ReleaseExecutionException( "An error is occurred in the tag process: " + e.getMessage(), e );
}
- finally
- {
- revertToOriginalScmSourceUrl( releaseDescriptor, scmSourceUrl );
- }
if ( !result.isSuccess() )
{
@@ -138,80 +123,28 @@
return relResult;
}
- private void revertToOriginalScmSourceUrl( ReleaseDescriptor releaseDescriptor, String scmSourceUrl )
- {
- if( !scmSourceUrl.equals( releaseDescriptor.getScmSourceUrl() ) )
- {
- releaseDescriptor.setScmSourceUrl( scmSourceUrl );
- }
- }
-
- private List getModules( ReleaseDescriptor releaseDescriptor, String workingDirectory )
- {
- Reader in = null;
- try
- {
- String pomFile = releaseDescriptor.getPomFileName();
- if ( pomFile == null || "".equals( pomFile.trim() ) )
- {
- pomFile = ReleaseUtil.POMv4;
- }
-
- String pathToRootPom = workingDirectory + ReleaseUtil.FS + pomFile;
-
- MavenXpp3Reader reader = new MavenXpp3Reader();
- in = ReaderFactory.newXmlReader( 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." );
- }
- finally
- {
- IOUtil.close( in );
- }
-
- return null;
- }
-
- public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, List reactorProjects )
+ public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
+ List reactorProjects )
throws ReleaseExecutionException, ReleaseFailureException
{
ReleaseResult result = new ReleaseResult();
validateConfiguration( releaseDescriptor );
- String workingDirectory = releaseDescriptor.getWorkingDirectory();
- List modules = getModules( releaseDescriptor, workingDirectory );
- String scmSourceUrl = releaseDescriptor.getScmSourceUrl();
+ ReleaseDescriptor basedirAlignedReleaseDescriptor =
+ ReleaseUtil.createBasedirAlignedReleaseDescriptor( releaseDescriptor, reactorProjects );
- // determine if project is a flat multi-module
- if ( modules != null && !modules.isEmpty() )
+ if ( releaseDescriptor.isRemoteTagging() )
{
- workingDirectory = ReleaseUtil.getBaseWorkingDirectory( workingDirectory, modules );
- releaseDescriptor.setScmSourceUrl( ReleaseUtil.getBaseScmUrl( scmSourceUrl, modules ) );
+ logInfo( result,
+ "Full run would be tagging working copy " + basedirAlignedReleaseDescriptor.getWorkingDirectory() +
+ " with label: '" + releaseDescriptor.getScmReleaseLabel() + "'" );
+ }
+ else
+ {
+ logInfo( result, "Full run would be tagging remotely " + basedirAlignedReleaseDescriptor.getScmSourceUrl() +
+ " with label: '" + releaseDescriptor.getScmReleaseLabel() + "'" );
}
-
- logInfo( result, "Full run would be tagging " + workingDirectory + " with label: '" +
- releaseDescriptor.getScmReleaseLabel() + "'" );
-
- revertToOriginalScmSourceUrl( releaseDescriptor, scmSourceUrl );
result.setResultCode( ReleaseResult.SUCCESS );
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java?rev=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/DefaultScmRepositoryConfigurator.java Tue Jan 26 14:43:06 2010
@@ -53,9 +53,15 @@
public ScmRepository getConfiguredRepository( ReleaseDescriptor releaseDescriptor, Settings settings )
throws ScmRepositoryException, NoSuchScmProviderException
{
+ String url = releaseDescriptor.getScmSourceUrl();
+ return getConfiguredRepository( url, releaseDescriptor, settings );
+ }
+
+ public ScmRepository getConfiguredRepository( String url, ReleaseDescriptor releaseDescriptor, Settings settings )
+ throws ScmRepositoryException, NoSuchScmProviderException
+ {
String username = releaseDescriptor.getScmUsername();
String password = releaseDescriptor.getScmPassword();
- String url = releaseDescriptor.getScmSourceUrl();
String privateKey = releaseDescriptor.getScmPrivateKey();
String passphrase = releaseDescriptor.getScmPrivateKeyPassPhrase();
@@ -141,7 +147,7 @@
{
svnRepo.setTagBase( tagBase );
}
-
+
String branchBase = releaseDescriptor.getScmBranchBase();
if ( !StringUtils.isEmpty( branchBase ) )
{
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmRepositoryConfigurator.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmRepositoryConfigurator.java?rev=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmRepositoryConfigurator.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/scm/ScmRepositoryConfigurator.java Tue Jan 26 14:43:06 2010
@@ -59,4 +59,17 @@
*/
ScmProvider getRepositoryProvider( ScmRepository repository )
throws NoSuchScmProviderException;
+
+ /**
+ * Construct a configured SCM repository from a release configuration with an overridden base SCM URL.
+ *
+ * @param url the SCM URL to use instead of the one from the release descriptor
+ * @param releaseDescriptor the configuration to insert into the repository
+ * @param settings the settings.xml configuraiton
+ * @return the repository created
+ * @throws ScmRepositoryException if it is not possible to create a suitable SCM repository
+ * @throws NoSuchScmProviderException if the requested SCM provider is not available
+ */
+ ScmRepository getConfiguredRepository( String url, ReleaseDescriptor releaseDescriptor, Settings settings )
+ throws ScmRepositoryException, NoSuchScmProviderException;
}
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=903243&r1=903242&r2=903243&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 Tue Jan 26 14:43:06 2010
@@ -27,6 +27,9 @@
import org.apache.commons.lang.StringUtils;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.release.ReleaseExecutionException;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
@@ -44,11 +47,6 @@
* 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()
{
@@ -73,12 +71,16 @@
public static File getStandardPom( MavenProject project )
{
if ( project == null )
+ {
return null;
+ }
File pom = project.getFile();
if ( pom == null )
+ {
return null;
+ }
File releasePom = getReleasePom( project );
if ( pom.equals( releasePom ) )
@@ -92,12 +94,16 @@
public static File getReleasePom( MavenProject project )
{
if ( project == null )
+ {
return null;
+ }
File pom = project.getFile();
if ( pom == null )
+ {
return null;
+ }
return new File( pom.getParent(), RELEASE_POMv4 );
}
@@ -106,7 +112,7 @@
* Gets the string contents of the specified XML file. Note: In contrast to an XML processor, the line separators in
* the returned string will be normalized to use the platform's native line separator. This is basically to save
* another normalization step when writing the string contents back to an XML file.
- *
+ *
* @param file The path to the XML file to read in, must not be <code>null</code>.
* @return The string contents of the XML file.
* @throws IOException If the file could not be opened/read.
@@ -128,10 +134,10 @@
/**
* Normalizes the line separators in the specified string.
- *
- * @param text The string to normalize, may be <code>null</code>.
+ *
+ * @param text The string to normalize, may be <code>null</code>.
* @param separator The line separator to use for normalization, typically "\n" or "\r\n", must not be
- * <code>null</code>.
+ * <code>null</code>.
* @return The input string with normalized line separators or <code>null</code> if the string was <code>null</code>
* .
*/
@@ -144,132 +150,87 @@
}
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;
+
+ public static ReleaseDescriptor createBasedirAlignedReleaseDescriptor( ReleaseDescriptor releaseDescriptor,
+ List reactorProjects )
+ throws ReleaseExecutionException
+ {
+ String basedir = getCommonBasedir( reactorProjects );
+
+ int parentLevels =
+ getBaseWorkingDirectoryParentCount( basedir,
+ FileUtils.normalize( releaseDescriptor.getWorkingDirectory() ) );
+
+ String url = releaseDescriptor.getScmSourceUrl();
+ url = realignScmUrl( parentLevels, url );
+
+ ReleaseDescriptor descriptor = new ReleaseDescriptor();
+ descriptor.setWorkingDirectory( basedir );
+ descriptor.setScmSourceUrl( url );
+ return descriptor;
}
-
- /**
- * 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 )
+
+ public static String getCommonBasedir( List reactorProjects )
{
- if ( path2 == null || path2.equals( "" ) )
- {
- return path1;
- }
- else
+ String basedir = null;
+ for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
{
- int indexDiff = StringUtils.indexOfDifference( path1, path2 );
- if( indexDiff > 0 )
+ MavenProject p = (MavenProject) i.next();
+
+ String dir = FileUtils.normalize( p.getBasedir().getAbsolutePath() );
+
+ if ( basedir == null )
{
- return path1.substring( 0, indexDiff );
+ basedir = dir;
}
else
{
- return path1;
+ basedir = StringUtils.getCommonPrefix( new String[]{dir, basedir} );
+ }
+ if ( basedir.endsWith( "/" ) && basedir.length() > 1 )
+ {
+ basedir = basedir.substring( 0, basedir.length() - 1 );
}
}
+ return basedir;
}
-
- private static int getLongestPathCount( List modules )
+
+ public static int getBaseWorkingDirectoryParentCount( String basedir, String workingDirectory )
{
- int count = 0;
- if( modules == null || modules.isEmpty() )
+ int num = 0;
+ if ( !workingDirectory.equals( basedir ) && workingDirectory.startsWith( basedir ) )
{
- 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;
- }
- }
+ do
+ {
+ workingDirectory = new File( workingDirectory ).getParent();
+ num++;
+ }
+ while ( workingDirectory.length() > basedir.length() );
}
- return count;
+ return num;
}
-
- /**
- * Gets the path to the project root. Useful in determining whether the project has a flat structure.
- *
- * @param project
- * @return the root project path or <code>null</code>
- */
- public static String getRootProjectPath( MavenProject project )
+
+ public static String realignScmUrl( int parentLevels, String url )
{
- String relPath = null;
-
- // module is a flat multi-module project
- if( getLongestPathCount( project.getModules() ) > 0 )
- {
- String projectBaseDir = project.getBasedir().getPath();
- projectBaseDir = StringUtils.replace( projectBaseDir, "\\", "/" );
-
- String projectPath = "";
- if( project.getScm() != null )
- {
- String scmConnection = project.getScm().getConnection();
- scmConnection = StringUtils.replace( scmConnection, "\\", "/" );
-
- projectPath =
- ReleaseUtil.getCommonPath( StringUtils.reverse( StringUtils.chomp( projectBaseDir, "/" ) ),
- StringUtils.reverse( StringUtils.chomp( scmConnection, "/" ) ) );
+ if ( !StringUtils.isEmpty( url ) )
+ {
+ int index = url.length();
+ String suffix = "";
+ if ( url.endsWith( "/" ) )
+ {
+ index--;
+ suffix = "/";
+ }
+ for ( int i = 0; i < parentLevels && index > 0; i++ )
+ {
+ index = url.lastIndexOf( '/', index - 1 );
+ }
+
+ if ( index > 0 )
+ {
+ url = url.substring( 0, index ) + suffix;
}
-
- relPath = StringUtils.reverse( projectPath );
}
-
- return relPath;
+ return url;
}
}
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=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original)
+++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Tue Jan 26 14:43:06 2010
@@ -418,14 +418,6 @@
This is very helpful for releasing large projects!
</description>
</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
@@ -615,8 +607,7 @@
!saveEquals( checkoutDirectory, that.checkoutDirectory ) ||
!saveEquals( performGoals, that.performGoals ) ||
!saveEquals( defaultReleaseVersion, that.defaultReleaseVersion ) ||
- !saveEquals( scmReleasedPomRevision, that.scmReleasedPomRevision ) ||
- !saveEquals( rootProjectPath, that.rootProjectPath )
+ !saveEquals( scmReleasedPomRevision, that.scmReleasedPomRevision )
)
{
return false;
@@ -820,7 +811,6 @@
result = 29 * result + ( performGoals != null ? performGoals.hashCode() : 0 );
result = 29 * result + ( defaultReleaseVersion != null ? defaultReleaseVersion.hashCode() : 0 );
result = 29 * result + ( scmReleasedPomRevision != null ? scmReleasedPomRevision.hashCode() : 0 );
- result = 29 * result + ( rootProjectPath != null ? rootProjectPath.hashCode() : 0 );
return result;
}
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=903243&r1=903242&r2=903243&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 Tue Jan 26 14:43:06 2010
@@ -326,6 +326,21 @@
assertTrue( comparePomFiles( reactorProjects ) );
}
+ public void testRewritePomWithDeepSubprojects()
+ throws Exception
+ {
+ List reactorProjects = createReactorProjects( "multimodule-with-deep-subprojects" );
+
+ ReleaseDescriptor config = createDescriptorFromProjects( reactorProjects );
+ config.mapReleaseVersion( "groupId:artifactId", NEXT_VERSION );
+ config.mapReleaseVersion( "groupId:subproject1", ALTERNATIVE_NEXT_VERSION );
+ config.mapReleaseVersion( "groupId:subproject2", ALTERNATIVE_NEXT_VERSION );
+
+ phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
+
+ assertTrue( comparePomFiles( reactorProjects ) );
+ }
+
public void testRewritePomForFlatMultiModule()
throws Exception
{
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java?rev=903243&r1=903242&r2=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmTagPhaseTest.java Tue Jan 26 14:43:06 2010
@@ -97,6 +97,39 @@
assertTrue( true );
}
+ public void testCommitMultiModuleDeepFolders()
+ throws Exception
+ {
+ List reactorProjects = createReactorProjects( "scm-commit/", "multimodule-with-deep-subprojects", false );
+ String sourceUrl = "http://svn.example.com/repos/project/trunk/";
+ String scmUrl = "scm:svn:" + sourceUrl;
+ ReleaseDescriptor descriptor = new ReleaseDescriptor();
+ descriptor.setScmSourceUrl( scmUrl );
+ MavenProject rootProject = ReleaseUtil.getRootProject( reactorProjects );
+ descriptor.setWorkingDirectory( rootProject.getFile().getParentFile().getAbsolutePath() );
+ descriptor.setScmReleaseLabel( "release-label" );
+ descriptor.setScmCommentPrefix( "[my prefix]" );
+ descriptor.setScmTagBase( "http://svn.example.com/repos/project/releases/" );
+
+ ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile() );
+
+ Mock scmProviderMock = new Mock( ScmProvider.class );
+ SvnScmProviderRepository scmProviderRepository = new SvnScmProviderRepository( sourceUrl );
+ scmProviderRepository.setTagBase( "http://svn.example.com/repos/project/releases/" );
+ ScmRepository repository = new ScmRepository( "svn", scmProviderRepository );
+ Constraint[] arguments = new Constraint[]{new IsEqual( repository ), new IsScmFileSetEquals( fileSet ),
+ new IsEqual( "release-label" ),
+ new IsScmTagParamtersEquals( new ScmTagParameters( "[my prefix] copy for tag release-label" ) )};
+ scmProviderMock.expects( new InvokeOnceMatcher() ).method( "tag" ).with( arguments ).will(
+ new ReturnStub( new TagScmResult( "...", Collections.singletonList( rootProject.getFile() ) ) ) );
+
+ ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
+ stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
+ stub.addScmRepositoryForUrl( scmUrl, repository );
+
+ phase.execute( descriptor, new DefaultReleaseEnvironment(), reactorProjects );
+ }
+
public void testCommitForFlatMultiModule()
throws Exception
{
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=903243&r1=903242&r2=903243&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 Tue Jan 26 14:43:06 2010
@@ -1,20 +1,33 @@
-/**
- *
- */
package org.apache.maven.shared.release.util;
+/*
+ * 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 java.io.File;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Arrays;
+import java.util.Collections;
-import org.apache.maven.model.Scm;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
/**
* Tests for ReleaseUtil methods
- *
- * @author aheritier
*/
public class ReleaseUtilTest
extends PlexusTestCase
@@ -23,154 +36,105 @@
* MRELEASE-273 : Tests if there no pom passed as parameter
*/
public void testProjectIsNull()
- throws Exception
{
assertNull( ReleaseUtil.getReleasePom( null ) );
assertNull( ReleaseUtil.getStandardPom( null ) );
}
-
- public void testGetBaseWorkingDirectoryNoModules()
- throws Exception
+
+ public void testGetCommonBasedirSingleProject()
{
- 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() ) );
+ assertEquals( "/working/directory/flat-multi-module/project", ReleaseUtil.getCommonBasedir(
+ Collections.singletonList( createProject( "/working/directory/flat-multi-module/project" ) ) ) );
}
-
- public void testGetBaseWorkingDirOfFlatMultiModule()
+
+ public void testGetCommonBasedirOfFlatMultiModule()
throws Exception
{
- List modules = new ArrayList();
- modules.add( "../core" );
- modules.add( "../webapp" );
+ assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+ new MavenProject[]{createProject( "/working/directory/flat-multi-module/root-project" ),
+ createProject( "/working/directory/flat-multi-module/core" ),
+ createProject( "/working/directory/flat-multi-module/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 testGetCommonBasedirOfRegularMultiModule()
+ throws Exception
+ {
+ assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+ new MavenProject[]{createProject( "/working/directory/flat-multi-module" ),
+ createProject( "/working/directory/flat-multi-module/core" ),
+ createProject( "/working/directory/flat-multi-module/webapp" )} ) ) );
}
- public void testGetBaseWorkingDirectoryOfRegularMultiModule()
+ public void testGetCommonBasedirOfFlatMultiModuleWithMultipleLevels()
throws Exception
{
- List modules = new ArrayList();
- modules.add( "core" );
- modules.add( "webapp" );
+ assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+ new MavenProject[]{createProject( "/working/directory/flat-multi-module/root-project" ),
+ createProject( "/working/directory/flat-multi-module/core" ),
+ createProject( "/working/directory/flat-multi-module/common/utils" ),
+ createProject( "/working/directory/flat-multi-module/common/xml" ),
+ createProject( "/working/directory/flat-multi-module/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 testGetCommonBasedirOfFlatMultiModuleWithDescendingHierarchy()
+ throws Exception
+ {
+ assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+ new MavenProject[]{createProject( "/working/directory/flat-multi-module/level/1/2/3" ),
+ createProject( "/working/directory/flat-multi-module/level/1/2" ),
+ createProject( "/working/directory/flat-multi-module/level/1" ),
+ createProject( "/working/directory/flat-multi-module/level" ),
+ createProject( "/working/directory/flat-multi-module/other" )} ) ) );
}
- public void testGetBaseScmUrlNoModules()
+ public void testGetBaseScmUrlSingleLevel()
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() ) );
+ 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/" ) );
}
-
- public void testGetBaseScmUrlOfFlatMultiModule()
+
+ public void testGetBaseScmUrlReturnOriginal()
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 ) );
+ assertEquals( "no-path-elements",
+ ReleaseUtil.realignScmUrl( 1, "no-path-elements" ) );
+ assertEquals( "no-path-elements",
+ ReleaseUtil.realignScmUrl( 15, "no-path-elements" ) );
}
- public void testGetBaseScmUrlOfRegularMultiModule()
+ public void testGetBaseScmUrlOfFlatMultiModule()
throws Exception
{
- List modules = new ArrayList();
- modules.add( "core" );
- modules.add( "webapp" );
+ String actual =
+ ReleaseUtil.realignScmUrl( 1, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/root-project" );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk", actual );
- 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 ) );
+ actual = ReleaseUtil.realignScmUrl( 1, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/root-project/" );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/", actual );
}
-
- public void testGetRootProjectPathFlatStructure()
+
+ public void testGetBaseScmUrlOfFlatMultiModuleMultipleLevels()
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 ) );
+ {
+ String actual =
+ ReleaseUtil.realignScmUrl( 3, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/root-project/1/2" );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk", actual );
+
+ actual = ReleaseUtil.realignScmUrl( 3, "scm:svn:http://svn.repo.com/flat-multi-module/trunk/root-project/1/2/" );
+ assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/", actual );
}
-
- public void testGetRootProjectPathRegularMultiModuleStructure()
- throws Exception
- {
- MavenProject project = new MavenProject()
+
+ private static MavenProject createProject( final String basedir )
+ {
+ return 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;
+ return new File( basedir );
}
};
-
- assertNull( ReleaseUtil.getRootProjectPath( project ) );
-
- project.getScm().setConnection( "scm:svn:file://localhost/target/svnroot/regular-multi-module/trunk/" );
- assertNull( ReleaseUtil.getRootProjectPath( project ) );
}
}
Copied: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/expected-pom.xml (from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/expected-pom.xml)
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/expected-pom.xml?p2=maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/expected-pom.xml&p1=maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/expected-pom.xml&r1=903017&r2=903243&rev=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/expected-pom.xml (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/expected-pom.xml Tue Jan 26 14:43:06 2010
@@ -1,17 +1,20 @@
<!--
- ~ Copyright 2005-2006 The Apache Software Foundation.
+ ~ 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
~
- ~ 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
~
- ~ 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.
+ ~ 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>
@@ -29,5 +32,6 @@
<modules>
<module>subproject1</module>
+ <module>sub/subproject2</module>
</modules>
</project>
Copied: maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/pom.xml (from r903017, maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/pom.xml)
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/pom.xml?p2=maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/pom.xml&p1=maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/pom.xml&r1=903017&r2=903243&rev=903243&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/pom-with-scm-of-parent-ending-with-a-slash/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/projects/rewrite-for-release/multimodule-with-deep-subprojects/pom.xml Tue Jan 26 14:43:06 2010
@@ -1,17 +1,20 @@
<!--
- ~ Copyright 2005-2006 The Apache Software Foundation.
+ ~ 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
~
- ~ 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
~
- ~ 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.
+ ~ 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>
@@ -22,12 +25,13 @@
<packaging>pom</packaging>
<scm>
- <connection>scm:svn:file://localhost/tmp/scm-repo/trunk/</connection>
- <developerConnection>scm:svn:file://localhost/tmp/scm-repo/trunk/</developerConnection>
- <url>file://localhost/tmp/scm-repo/trunk/</url>
+ <connection>scm:svn:file://localhost/tmp/scm-repo/trunk</connection>
+ <developerConnection>scm:svn:file://localhost/tmp/scm-repo/trunk</developerConnection>
+ <url>file://localhost/tmp/scm-repo/trunk</url>
</scm>
<modules>
<module>subproject1</module>
+ <module>sub/subproject2</module>
</modules>
</project>