Author: jvanzyl
Date: Mon Jan 23 18:59:09 2006
New Revision: 371784
URL: http://svn.apache.org/viewcvs?rev=371784&view=rev
Log:
o adding a little IT so that I can work through the issues in the release plugin
Added:
maven/plugins/trunk/maven-release-plugin/src/it/
maven/plugins/trunk/maven-release-plugin/src/it/project/
maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml (with
props)
maven/plugins/trunk/maven-release-plugin/src/it/project/src/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
(with props)
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
(with props)
maven/plugins/trunk/maven-release-plugin/src/it/test.sh (with props)
Modified:
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java
Added: maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml?rev=371784&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml (added)
+++ maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml Mon Jan 23
18:59:09 2006
@@ -0,0 +1,41 @@
+<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.it</groupId>
+ <artifactId>test-project-one</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>Maven Quick Start Archetype</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <scm>
+
<connection>scm:svn:file://${project.file.parentFile.parentFile}/target/svnroot/trunk/project</connection>
+
<developerConnection>scm:svn:file://${project.file.parentFile.parentFile}/target/svnroot/trunk/project</developerConnection>
+ </scm>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-release-plugin</artifactId>
+ <configuration>
+
<tagBase>file://${project.file.parentFile.parentFile}/target/svnroot/tags</tagBase>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+ <distributionManagement>
+ <repository>
+ <id>repo1</id>
+ <name>Maven Central Repository</name>
+ <url>file://${project.file.parentFile.parentFile}/target/repository</url>
+ </repository>
+ </distributionManagement>
+</project>
Propchange: maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java?rev=371784&view=auto
==============================================================================
---
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
(added)
+++
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
Mon Jan 23 18:59:09 2006
@@ -0,0 +1,13 @@
+package org.apache.maven.plugin.release.it;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ }
+}
Propchange:
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java?rev=371784&view=auto
==============================================================================
---
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
(added)
+++
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
Mon Jan 23 18:59:09 2006
@@ -0,0 +1,38 @@
+package org.apache.maven.plugin.release.it;
+
+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 );
+ }
+}
Propchange:
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/test.sh?rev=371784&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/it/test.sh (added)
+++ maven/plugins/trunk/maven-release-plugin/src/it/test.sh Mon Jan 23 18:59:09
2006
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+rm -rf target
+
+mkdir target
+
+svnadmin create --fs-type fsfs target/svnroot
+
+dir=`readlink -f ${PWD}`
+
+if [ "$1" == "windows" ]; then
+ dir=`cygpath -m $dir`
+ echo setting dir to $dir
+fi
+
+name=project
+
+svn import $name file://${dir}/target/svnroot/trunk/$name -m "import."
+svn mkdir file://${dir}/target/svnroot/tags -m "Creating tags dir."
+
+svn co file://${dir}/target/svnroot/trunk/$name target/project.checkout
+
+cd target/project.checkout
+
+cat pom.xml | sed "s#\${project.file.parentFile.parentFile}#$dir#g" >tmp
+mv tmp pom.xml
+
+svn ci -m 'update scm' pom.xml
+
+rm -rf target
+
+mvn clean install
+ret=$?; if [ $ret != 0 ]; then exit $ret; fi
+
+mvn -e release:prepare -Denv=test
+ret=$?; if [ $ret != 0 ]; then exit $ret; fi
+
+mvn -e release:perform -Denv=test
+ret=$?; if [ $ret != 0 ]; then exit $ret; fi
+
Propchange: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
------------------------------------------------------------------------------
svn:executable = *
Propchange: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified:
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
---
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
(original)
+++
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
Mon Jan 23 18:59:09 2006
@@ -27,6 +27,8 @@
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.components.interactivity.InputHandler;
+import java.io.File;
+
/**
* @author <a href="mailto:[EMAIL PROTECTED]">John Casey</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
@@ -36,6 +38,13 @@
extends AbstractMojo
{
/**
+ * @parameter expression="${basedir}"
+ * @required
+ * @readonly
+ */
+ protected File basedir;
+
+ /**
* @component
*/
private ScmManager scmManager;
@@ -52,12 +61,12 @@
*/
private Settings settings;
-
+
private ScmHelper scmHelper;
protected abstract ReleaseProgressTracker getReleaseProgress()
throws MojoExecutionException;
-
+
protected InputHandler getInputHandler()
{
return inputHandler;
@@ -67,7 +76,7 @@
{
return settings;
}
-
+
protected ScmHelper getScm( String directory )
throws MojoExecutionException
{
@@ -91,19 +100,20 @@
}
scmHelper.setWorkingDirectory( directory );
-
+
loadStarteamUsernamePassword( scmHelper );
return scmHelper;
}
-
+
private ScmManager getScmManager()
{
return this.scmManager;
}
-
+
/**
* Load starteam username/password from settings if needed
+ *
* @param scmHelper
* @throws MojoExecutionException
*/
@@ -113,45 +123,60 @@
if ( scmHelper.getUsername() == null || scmHelper.getPassword() ==
null )
{
ScmRepository repository = null;
-
+
try
{
repository = getScmManager().makeScmRepository(
scmHelper.getUrl() );
}
catch ( Exception e )
{
- throw new MojoExecutionException ( "Can't load the scm
provider.", e );
+ throw new MojoExecutionException( "Can't load the scm
provider.", e );
}
if ( repository.getProvider().equals( "starteam" ) )
{
StarteamScmProviderRepository starteamRepo =
(StarteamScmProviderRepository) repository.getProviderRepository();
-
+
String starteamAddress = starteamRepo.getHost();
-
+
int starteamPort = starteamRepo.getPort();
-
+
if ( starteamPort != 0 )
{
starteamAddress += ":" + starteamPort;
}
-
+
Server server = this.settings.getServer( starteamAddress );
-
+
if ( server != null )
{
if ( scmHelper.getUsername() == null )
{
scmHelper.setUsername( server.getUsername() );
}
-
+
if ( scmHelper.getPassword() == null )
{
scmHelper.setPassword( server.getPassword() );
}
- }
- }
+ }
+ }
}
-
+
}
+
+ // ----------------------------------------------------------------------
+ // Utility methods
+ // ----------------------------------------------------------------------
+
+ protected void removeReleaseProperties()
+ {
+ File releaseProperties = new File( basedir,
ReleaseProgressTracker.RELEASE_PROPERTIES );
+
+ if ( releaseProperties.exists() )
+ {
+ releaseProperties.delete();
+ }
+ }
+
}
Modified:
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
---
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
(original)
+++
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
Mon Jan 23 18:59:09 2006
@@ -23,6 +23,7 @@
import org.apache.maven.plugins.release.helpers.ScmHelper;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.cli.CommandLineException;
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;
@@ -49,13 +50,6 @@
extends AbstractReleaseMojo
{
/**
- * @parameter expression="${basedir}"
- * @required
- * @readonly
- */
- private File basedir;
-
- /**
* Comma or space separated goals
* @parameter expression="${goals}"
*/
@@ -96,6 +90,8 @@
checkout();
runGoals();
+
+ cleanup();
}
private void checkout()
@@ -246,6 +242,16 @@
throw new MojoExecutionException( "Can't run goal " + goals, e );
}
}
+
+ private void cleanup()
+ {
+ removeReleaseProperties();
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
protected ReleaseProgressTracker getReleaseProgress()
throws MojoExecutionException
Modified:
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
---
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
(original)
+++
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
Mon Jan 23 18:59:09 2006
@@ -85,13 +85,6 @@
private static final String POM = "pom.xml";
/**
- * @parameter expression="${basedir}"
- * @required
- * @readonly
- */
- private File basedir;
-
- /**
* @parameter expression="${settings.interactiveMode}"
* @required
* @readonly
@@ -178,58 +171,22 @@
private List pomFiles;
- private void validateConfiguration()
- throws MojoExecutionException
- {
- if ( StringUtils.isEmpty( urlScm ) )
- {
- Model model = ( (MavenProject) reactorProjects.get( 0 )
).getModel();
- if ( model.getScm() != null )
- {
- urlScm = model.getScm().getConnection();
- if ( StringUtils.isEmpty( urlScm ) )
- {
- throw new MojoExecutionException(
- "Missing required
setting: scm connection or developerConnection must be specified." );
- }
- }
- }
- }
-
- private void checkpoint( String pointName )
- throws MojoExecutionException
- {
- try
- {
- getReleaseProgress().checkpoint( pointName );
- }
- catch ( IOException e )
- {
- getLog().warn( "Error writing checkpoint.", e );
- }
- }
-
- private Set createReactorProjectSet( List reactorProjects )
- {
- Set reactorProjectSet = new HashSet();
-
- for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
- {
- MavenProject project = (MavenProject) it.next();
-
- String versionlessArtifactKey = ArtifactUtils.versionlessKey(
project.getGroupId(), project.getArtifactId() );
-
- reactorProjectSet.add( versionlessArtifactKey );
- }
-
- return reactorProjectSet;
- }
-
public void execute()
throws MojoExecutionException, MojoFailureException
{
+ //
----------------------------------------------------------------------
+ // Path of clarity
+ //
+ // You should be able to easily see what the path is that this will
follow
+ // in order to release a plugin.
+ //
----------------------------------------------------------------------
+
validateConfiguration();
+ // checkForInitialization()
+
+ // checkForReleasedPrepared()
+
checkpoint( ReleaseProgressTracker.CP_INITIALIZED );
if ( !getReleaseProgress().verifyCheckpoint(
ReleaseProgressTracker.CP_PREPARED_RELEASE ) )
@@ -282,8 +239,11 @@
for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
{
MavenProject project = (MavenProject) it.next();
+
String projectId = ArtifactUtils.versionlessKey(
project.getGroupId(), project.getArtifactId() );
+
Model model = (Model) releasedProjects.get( projectId );
+
updateDependencyManagement( model, project.getFile(),
"release" );
}
@@ -328,6 +288,57 @@
checkpoint( ReleaseProgressTracker.CP_PREPARED_RELEASE );
}
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ private void validateConfiguration()
+ throws MojoExecutionException
+ {
+ if ( StringUtils.isEmpty( urlScm ) )
+ {
+ Model model = ( (MavenProject) reactorProjects.get( 0 )
).getModel();
+ if ( model.getScm() != null )
+ {
+ urlScm = model.getScm().getConnection();
+ if ( StringUtils.isEmpty( urlScm ) )
+ {
+ throw new MojoExecutionException(
+ "Missing required
setting: scm connection or developerConnection must be specified." );
+ }
+ }
+ }
+ }
+
+ private void checkpoint( String pointName )
+ throws MojoExecutionException
+ {
+ try
+ {
+ getReleaseProgress().checkpoint( pointName );
+ }
+ catch ( IOException e )
+ {
+ getLog().warn( "Error writing checkpoint.", e );
+ }
+ }
+
+ private Set createReactorProjectSet( List reactorProjects )
+ {
+ Set reactorProjectSet = new HashSet();
+
+ for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
+ {
+ MavenProject project = (MavenProject) it.next();
+
+ String versionlessArtifactKey = ArtifactUtils.versionlessKey(
project.getGroupId(), project.getArtifactId() );
+
+ reactorProjectSet.add( versionlessArtifactKey );
+ }
+
+ return reactorProjectSet;
}
private void updateDependencyManagement( Model model, File file, String
type )
Modified:
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
---
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java
(original)
+++
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java
Mon Jan 23 18:59:09 2006
@@ -14,8 +14,7 @@
public class ReleaseProgressTracker
{
-
- private static final String RELEASE_PROPERTIES = "release.properties";
+ public static final String RELEASE_PROPERTIES = "release.properties";
private static final String USERNAME = "maven.username";