You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jv...@apache.org on 2005/05/22 02:33:55 UTC
svn commit: r171270 - in
/maven/components/trunk/maven-plugins/maven-release-plugin: ./
src/main/java/org/apache/maven/plugin/release/
src/main/java/org/apache/maven/plugin/scm/
Author: jvanzyl
Date: Sat May 21 17:33:55 2005
New Revision: 171270
URL: http://svn.apache.org/viewcvs?rev=171270&view=rev
Log:
o still a work in progress but i can release using the plugin, have released
several components now and have worked out most of the kinks. there some
debugging info but by the time i go through the continuum release i'll
know what's what.
Modified:
maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/AbstractReleaseMojo.java
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PerformReleaseMojo.java
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PrepareReleaseMojo.java
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java
Modified: maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml?rev=171270&r1=171269&r2=171270&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml (original)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml Sat May 21 17:33:55 2005
@@ -18,17 +18,17 @@
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-api</artifactId>
- <version>1.0-alpha-1-SNAPSHOT</version>
+ <version>1.0-alpha-1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-cvs</artifactId>
- <version>1.0-alpha-1-SNAPSHOT</version>
+ <version>1.0-alpha-1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-svn</artifactId>
- <version>1.0-alpha-1-SNAPSHOT</version>
+ <version>1.0-alpha-1</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
Modified: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/AbstractReleaseMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/AbstractReleaseMojo.java?rev=171270&r1=171269&r2=171270&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/AbstractReleaseMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/AbstractReleaseMojo.java Sat May 21 17:33:55 2005
@@ -27,6 +27,11 @@
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import java.util.Properties;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.File;
+
/**
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
* @version $Id: DoxiaMojo.java 169372 2005-05-09 22:47:34Z evenisse $
@@ -35,69 +40,58 @@
extends AbstractMojo
implements Contextualizable
{
+ public static final String RELEASE_PROPS = "release.properties";
+
+ public static final String USERNAME = "maven.username";
+
+ public static final String TAG = "tag";
+
+ public static final String SCM_URL = "scm.url";
+
/**
* @parameter expression="${project.build.directory}/checkout"
* @required
*/
- private String workingDirectory;
+ protected String workingDirectory;
/**
* @parameter expression="${project.scm.developerConnection}"
* @required
*/
- private String urlScm;
+ protected String urlScm;
/**
* @parameter expression="${maven.username}"
- * @required
*/
- private String username;
+ protected String username;
/**
* @parameter expression="${password}"
*/
- private String password;
+ protected String password;
/**
* @parameter expression="${tagBase}"
*/
- private String tagBase = "../tags";
+ protected String tagBase = "../tags";
/**
* @parameter expression="${tag}"
*/
- private String tag;
+ protected String tag;
/**
* @parameter expression="${project}"
* @required
* @readonly
*/
- private MavenProject project;
+ protected MavenProject project;
private PlexusContainer container;
- private ScmManager scmManager;
-
- public MavenProject getProject()
- {
- return project;
- }
-
- public String getWorkingDirectory()
- {
- return workingDirectory;
- }
+ protected ScmManager scmManager;
- protected ScmManager getScmManager()
- {
- return scmManager;
- }
-
- public String getTag()
- {
- return tag;
- }
+ private Properties releaseProperties;
protected ScmBean getScm()
{
@@ -105,12 +99,31 @@
scm.setScmManager( scmManager );
+ if ( releaseProperties != null )
+ {
+ urlScm = releaseProperties.getProperty( SCM_URL );
+ }
+
scm.setUrl( urlScm );
+ System.out.println( "urlScm = " + urlScm );
+
+ if ( releaseProperties != null )
+ {
+ tag = releaseProperties.getProperty( TAG );
+ }
+
scm.setTag( tag );
scm.setTagBase( tagBase );
+ if ( releaseProperties != null )
+ {
+ username = releaseProperties.getProperty( USERNAME );
+ }
+
+ System.out.println( "username = " + username );
+
scm.setUsername( username );
scm.setPassword( password );
@@ -131,6 +144,23 @@
try
{
initScmManager();
+
+ // ----------------------------------------------------------------------
+ // The release properties file has been created by the prepare phase and
+ // wants to be shared with the perform.
+ // ----------------------------------------------------------------------
+
+ File releasePropertiesFile = new File( project.getFile().getParentFile(), RELEASE_PROPS );
+
+ if ( releasePropertiesFile.exists() )
+ {
+
+ releaseProperties = new Properties();
+
+ InputStream is = new FileInputStream( releasePropertiesFile );
+
+ releaseProperties.load( is );
+ }
}
catch ( Exception e )
{
Modified: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PerformReleaseMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PerformReleaseMojo.java?rev=171270&r1=171269&r2=171270&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PerformReleaseMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PerformReleaseMojo.java Sat May 21 17:33:55 2005
@@ -72,7 +72,7 @@
cl.setExecutable( "m2" );
- cl.setWorkingDirectory( getWorkingDirectory() );
+ cl.setWorkingDirectory( workingDirectory );
cl.createArgument().setLine( goals );
Modified: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PrepareReleaseMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PrepareReleaseMojo.java?rev=171270&r1=171269&r2=171270&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PrepareReleaseMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/PrepareReleaseMojo.java Sat May 21 17:33:55 2005
@@ -20,7 +20,6 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
-import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.scm.ScmBean;
import org.apache.maven.plugin.transformer.PomTransformer;
@@ -31,10 +30,14 @@
import org.codehaus.plexus.components.inputhandler.InputHandler;
import org.codehaus.plexus.util.StringUtils;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Properties;
/**
* Prepare for a release in SCM
@@ -56,29 +59,30 @@
*/
private String basedir;
- /**
- * @parameter expression="${project}"
- * @required
- * @readonly
- */
- private MavenProject project;
-
private static final String SNAPSHOT = "-SNAPSHOT";
private String projectVersion;
+ private Model model;
+
protected void executeTask()
throws MojoExecutionException
{
+ model = project.getModel();
+
checkForLocalModifications();
checkForPresenceOfSnapshots();
- transformPom();
+ transformPomToReleaseVersionPom();
checkInReleaseVersionPom();
tagRelease();
+
+ transformPomToSnapshotVersionPom();
+
+ checkInSnapshotVersionPom();
}
private boolean isSnapshot( String version )
@@ -207,11 +211,9 @@
}
}
- private void transformPom()
+ private void transformPomToReleaseVersionPom()
throws MojoExecutionException
{
- Model model = project.getModel();
-
if ( !isSnapshot( model.getVersion() ) )
{
throw new MojoExecutionException( "This project isn't a snapshot (" + model.getVersion() + ")." );
@@ -240,6 +242,29 @@
model.setVersion( projectVersion );
+ try
+ {
+ Properties releaseProperties = new Properties();
+
+ releaseProperties.setProperty( "version", projectVersion );
+
+ releaseProperties.setProperty( USERNAME, username );
+
+ releaseProperties.setProperty( TAG, getTagLabel() );
+
+ releaseProperties.setProperty( SCM_URL, urlScm );
+
+ FileOutputStream os = new FileOutputStream( new File( project.getFile().getParentFile(), RELEASE_PROPS ) );
+
+ releaseProperties.store( os, "maven release plugin info" );
+
+ os.close();
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Cannote write release-version file.", e );
+ }
+
//Rewrite parent version
if ( project.hasParent() )
{
@@ -304,10 +329,70 @@
}
catch ( Exception e )
{
- throw new MojoExecutionException( "Can't update pom.", e );
+ throw new MojoExecutionException( "Can't transform pom to its release version form.", e );
+ }
+ }
+
+ private void transformPomToSnapshotVersionPom()
+ throws MojoExecutionException
+ {
+ // TODO: we will need to incorporate versioning strategies here because it is unlikely
+ // that everyone will be able to agree on a standard.
+
+ // releaseVersion = 1.0-beta-4
+ // snapshotVersion = 1.0-beta-5-SNAPSHOT
+
+ String nextVersionString = projectVersion.substring( projectVersion.lastIndexOf( "-" ) + 1 );
+
+ try
+ {
+ System.out.println( "nextVersionString = " + nextVersionString );
+
+ nextVersionString = Integer.toString( Integer.parseInt( nextVersionString ) + 1 );
+
+ System.out.println( "nextVersionString = " + nextVersionString );
+
+ projectVersion = projectVersion.substring( 0, projectVersion.lastIndexOf( "-" ) + 1 ) + nextVersionString + SNAPSHOT;
+ }
+ catch ( NumberFormatException e )
+ {
+ projectVersion = "";
+ }
+
+ try
+ {
+ getLog().info( "What is the new version? [" + projectVersion + "]" );
+
+ InputHandler handler = (InputHandler) getContainer().lookup( InputHandler.ROLE );
+
+ String inputVersion = handler.readLine();
+
+ if ( !StringUtils.isEmpty( inputVersion ) )
+ {
+ projectVersion = inputVersion;
+ }
+
+ model.setVersion( projectVersion );
+
+ PomTransformer transformer = new VersionTransformer();
+
+ transformer.setOutputFile( project.getFile() );
+
+ transformer.setProject( project.getFile() );
+
+ transformer.setUpdatedModel ( model );
+
+ transformer.transformNodes();
+
+ transformer.write();
+ }
+ catch ( Exception e )
+ {
+ throw new MojoExecutionException( "Can't transform pom to its snapshot version form.", e );
}
}
+
/**
* Check in the POM to SCM after it has been transformed where the version has been
* set to the release version.
@@ -317,13 +402,25 @@
private void checkInReleaseVersionPom()
throws MojoExecutionException
{
+ checkInPom( "[maven-release-plugin] prepare release " + projectVersion );
+ }
+
+ private void checkInSnapshotVersionPom()
+ throws MojoExecutionException
+ {
+ checkInPom( "[maven-release-plugin] prepare release " + projectVersion );
+ }
+
+ private void checkInPom( String message )
+ throws MojoExecutionException
+ {
try
{
ScmBean scm = getScm();
scm.setWorkingDirectory( basedir );
- scm.checkin( "[maven-release-plugin] prepare release " + projectVersion, "pom.xml", null );
+ scm.checkin( message, "pom.xml", null );
}
catch ( Exception e )
{
@@ -331,6 +428,17 @@
}
}
+ private String getTagLabel()
+ {
+ String tag = project.getArtifactId().toUpperCase() + "_" + projectVersion.toUpperCase();
+
+ tag = tag.replace( '-', '_' );
+
+ tag = tag.replace( '.', '_' );
+
+ return tag;
+ }
+
/**
* Tag the release in preparation for performing the release.
*
@@ -345,12 +453,7 @@
private void tagRelease()
throws MojoExecutionException
{
-
- String tag = project.getArtifactId().toUpperCase() + "_" + projectVersion.toUpperCase();
-
- tag = tag.replace( '-', '_' );
-
- tag = tag.replace( '.', '_' );
+ String tag = getTagLabel();
try
{
Modified: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java?rev=171270&r1=171269&r2=171270&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java (original)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java Sat May 21 17:33:55 2005
@@ -1,6 +1,6 @@
package org.apache.maven.plugin.scm;
-/* ====================================================================
+/* =========7===========================================================
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -113,9 +113,13 @@
{
// TODO: improve error handling
System.err.println( "Provider message:" );
+
System.err.println( result.getProviderMessage() );
+
System.err.println( "Command output:" );
+
System.err.println( result.getCommandOutput() );
+
throw new ScmException( "Error!" );
}
}
@@ -126,12 +130,19 @@
ScmRepository repository = getScmRepository();
checkoutDirectory = new File( workingDirectory );
- if ( checkoutDirectory.exists() )
+
+ System.out.println( "workingDirectory = " + workingDirectory );
+
+ System.out.println( "tag = " + tag );
+
+ // TODO: sanity check that it is not . or .. or lower
+
+ if ( FileUtils.fileExists( workingDirectory ) )
{
- // TODO: sanity check that it is not . or .. or lower
- FileUtils.deleteDirectory( checkoutDirectory );
+ FileUtils.deleteDirectory( workingDirectory );
+
+ FileUtils.mkdir( workingDirectory );
}
- checkoutDirectory.mkdirs();
CheckOutScmResult result = getScmManager().checkOut( repository, new ScmFileSet( checkoutDirectory ), tag );
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org