Author: evenisse Date: Thu Nov 17 07:10:53 2005 New Revision: 345257 URL: http://svn.apache.org/viewcvs?rev=345257&view=rev Log: PR: MNG-1553 and MNG-1561 Submitted by: Dan Tran
o ability to retreive starteam username/password from settings.xml o define goals to run on command line 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 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=345257&r1=345256&r2=345257&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 Thu Nov 17 07:10:53 2005 @@ -1,80 +1,157 @@ -package org.apache.maven.plugins.release; - -/* - * Copyright 2001-2005 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.release.helpers.ReleaseProgressTracker; -import org.apache.maven.plugins.release.helpers.ScmHelper; -import org.apache.maven.scm.manager.ScmManager; -import org.codehaus.plexus.components.interactivity.InputHandler; - -/** - * @author <a href="mailto:[EMAIL PROTECTED]">John Casey</a> - * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a> - * @version $Id$ - */ -public abstract class AbstractReleaseMojo - extends AbstractMojo -{ - /** - * @component - */ - private ScmManager scmManager; - - /** - * @component - */ - private InputHandler inputHandler; - - private ScmHelper scmHelper; - - protected abstract ReleaseProgressTracker getReleaseProgress() - throws MojoExecutionException; - - protected InputHandler getInputHandler() - { - return inputHandler; - } - - protected ScmHelper getScm( String directory ) - throws MojoExecutionException - { - if ( scmHelper == null ) - { - scmHelper = new ScmHelper(); - - scmHelper.setScmManager( scmManager ); - - ReleaseProgressTracker releaseProgress = getReleaseProgress(); - - scmHelper.setUrl( releaseProgress.getScmUrl() ); - - scmHelper.setTag( releaseProgress.getScmTag() ); - - scmHelper.setTagBase( releaseProgress.getScmTagBase() ); - - scmHelper.setUsername( releaseProgress.getUsername() ); - - scmHelper.setPassword( releaseProgress.getPassword() ); - } - - scmHelper.setWorkingDirectory( directory ); - - return scmHelper; - } -} +package org.apache.maven.plugins.release; + +/* + * Copyright 2001-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.release.helpers.ReleaseProgressTracker; +import org.apache.maven.plugins.release.helpers.ScmHelper; +import org.apache.maven.scm.manager.ScmManager; +import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository; +import org.apache.maven.scm.repository.ScmRepository; +import org.apache.maven.settings.Server; +import org.apache.maven.settings.Settings; +import org.codehaus.plexus.components.interactivity.InputHandler; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">John Casey</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a> + * @version $Id$ + */ +public abstract class AbstractReleaseMojo + extends AbstractMojo +{ + /** + * @component + */ + private ScmManager scmManager; + + /** + * @component + */ + private InputHandler inputHandler; + + /** + * @parameter expression="${settings}" + * @required + * @readonly + */ + private Settings settings; + + + private ScmHelper scmHelper; + + protected abstract ReleaseProgressTracker getReleaseProgress() + throws MojoExecutionException; + + protected InputHandler getInputHandler() + { + return inputHandler; + } + + protected Settings getSettings() + { + return settings; + } + + protected ScmHelper getScm( String directory ) + throws MojoExecutionException + { + if ( scmHelper == null ) + { + scmHelper = new ScmHelper(); + + scmHelper.setScmManager( scmManager ); + + ReleaseProgressTracker releaseProgress = getReleaseProgress(); + + scmHelper.setUrl( releaseProgress.getScmUrl() ); + + scmHelper.setTag( releaseProgress.getScmTag() ); + + scmHelper.setTagBase( releaseProgress.getScmTagBase() ); + + scmHelper.setUsername( releaseProgress.getUsername() ); + + scmHelper.setPassword( releaseProgress.getPassword() ); + } + + 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 + */ + private void loadStarteamUsernamePassword( ScmHelper scmHelper ) + throws MojoExecutionException + { + 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 ); + } + + 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() ); + } + } + } + } + + } +} 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=345257&r1=345256&r2=345257&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 Thu Nov 17 07:10:53 2005 @@ -53,6 +53,7 @@ private File basedir; /** + * Comma or space separated goals * @parameter expression="${goals}" */ private String goals = "deploy"; @@ -122,8 +123,17 @@ cl.setWorkingDirectory( workingDirectory ); - cl.createArgument().setLine( goals ); - + if ( this.goals != null ) + { + // accept both space and comma, so the old way still work + String [] tokens = StringUtils.split( this.goals, ", " ); + + for ( int i = 0 ; i < tokens.length ; ++i ) + { + cl.createArgument().setValue( tokens[i] ); + } + } + cl.createArgument().setLine( "-DperformRelease=true" ); cl.createArgument().setLine( "--no-plugin-updates" ); @@ -201,6 +211,8 @@ try { + this.getLog().info( cl.toString() ); + int result = CommandLineUtils.executeCommandLine( cl, consumer, consumer ); if ( result != 0 ) 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=345257&r1=345256&r2=345257&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 Thu Nov 17 07:10:53 2005 @@ -47,7 +47,6 @@ import org.apache.maven.project.path.PathTranslator; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFile; -import org.apache.maven.settings.Settings; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; @@ -119,12 +118,6 @@ */ private ArtifactRepository localRepository; - /** - * @parameter expression="${settings}" - * @required - * @readonly - */ - private Settings settings; /** * @parameter expression="${reactorProjects}" @@ -972,7 +965,7 @@ { version = pluginVersionManager.resolvePluginVersion( plugin.getGroupId(), plugin.getArtifactId(), releaseProject, - settings, localRepository ); + getSettings(), localRepository ); } catch ( PluginVersionResolutionException e ) { @@ -1016,7 +1009,7 @@ { version = pluginVersionManager.resolveReportPluginVersion( plugin.getGroupId(), plugin.getArtifactId(), - releaseProject, settings, + releaseProject, getSettings(), localRepository ); } catch ( PluginVersionResolutionException e )