You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by ev...@apache.org on 2005/05/16 18:27:53 UTC
svn commit: r170406 -
/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver
/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin
/maven/components/trunk/maven-plugins/maven-release-plugin
/maven/components/trunk/maven-plugins/maven-release-plugin/src
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release
/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm
/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project
Author: evenisse
Date: Mon May 16 09:27:51 2005
New Revision: 170406
URL: http://svn.apache.org/viewcvs?rev=170406&view=rev
Log:
Start of release plugin
Added:
maven/components/trunk/maven-plugins/maven-release-plugin/
maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml
maven/components/trunk/maven-plugins/maven-release-plugin/src/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/ReleaseMojo.java
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/
maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java
Modified:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=170406&r1=170405&r2=170406&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Mon May 16 09:27:51 2005
@@ -67,6 +67,11 @@
public void resolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository )
throws ArtifactResolutionException
{
+ if ( artifact == null )
+ {
+ return;
+ }
+
// ----------------------------------------------------------------------
// Check for the existence of the artifact in the specified local
// ArtifactRepository. If it is present then simply return as the
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=170406&r1=170405&r2=170406&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Mon May 16 09:27:51 2005
@@ -832,6 +832,19 @@
// TODO: should I get the modified artifacts back into the project?
artifactResolver.resolve( artifact, context.getRemoteRepositories(), context.getLocalRepository() );
}
+
+ Set pluginArtifacts = new HashSet();
+ for ( Iterator it = context.getProject().getPluginArtifacts().iterator(); it.hasNext(); )
+ {
+ Artifact artifact = (Artifact) it.next();
+
+ artifactResolver.resolve( artifact, context.getRemoteRepositories(), context.getLocalRepository() );
+getLogger().info( "=======>" + artifact.getArtifactId() + "/" + artifact.getVersion() + "/" + artifact.getBaseVersion() );
+ pluginArtifacts.add( artifact );
+ }
+ context.getProject().setPluginArtifacts( pluginArtifacts );
+
+ artifactResolver.resolve( context.getProject().getParentArtifact(), context.getRemoteRepositories(), context.getLocalRepository() );
}
}
Added: 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=170406&view=auto
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml (added)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml Mon May 16 09:27:51 2005
@@ -0,0 +1,45 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>maven-plugin-parent</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>maven-plugin</packaging>
+ <name>Maven Release plugin</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-api</artifactId>
+ <version>1.0-alpha-1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-provider-cvs</artifactId>
+ <version>1.0-alpha-1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-provider-svn</artifactId>
+ <version>1.0-alpha-1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-provider-api</artifactId>
+ <version>1.0-alpha-3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-file</artifactId>
+ <version>1.0-alpha-3</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/ReleaseMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/ReleaseMojo.java?rev=170406&view=auto
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/ReleaseMojo.java (added)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/release/ReleaseMojo.java Mon May 16 09:27:51 2005
@@ -0,0 +1,411 @@
+package org.apache.maven.plugin.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.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.transform.ReleaseArtifactTransformation;
+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.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.scm.ScmBean;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.manager.ScmManager;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @goal release
+ * @description Release plugin
+ * @requiresDependencyResolution test
+ *
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id: DoxiaMojo.java 169372 2005-05-09 22:47:34Z evenisse $
+ */
+public class ReleaseMojo
+ extends AbstractMojo
+ implements Contextualizable
+{
+ /**
+ * @parameter expression="${basedir}"
+ * @required
+ * @readonly
+ */
+ private String basedir;
+
+ /**
+ * @parameter expression="${project.build.directory}/checkout"
+ * @required
+ */
+ private String workingDirectory;
+
+ /**
+ * @parameter expression="${project.scm.developerConnection}"
+ * @required
+ */
+ private String urlScm;
+
+ /**
+ * @parameter expression="${username}"
+ */
+ private String username;
+
+ /**
+ * @parameter expression="${password}"
+ */
+ private String password;
+
+ /**
+ * @parameter expression="${tagBase}"
+ */
+ private String tagBase = "../tags";
+
+ /**
+ * @parameter expression="${tag}"
+ */
+ private String tag;
+
+ /**
+ * @parameter expression="${project.artifacts}"
+ * @readonly
+ */
+ private Set dependencies;
+
+ /**
+ * @parameter expression="${project.pluginArtifacts}"
+ * @readonly
+ */
+ private Set plugins;
+
+ /**
+ * @parameter expression="${localRepository}"
+ * @required
+ * @readonly
+ */
+ private ArtifactRepository localRepository;
+
+ /**
+ * @parameter expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}"
+ * @required
+ * @readonly
+ */
+ private ArtifactFactory artifactFactory;
+
+ /**
+ * @parameter expression="${project}"
+ * @required
+ * @readonly
+ */
+ private MavenProject project;
+
+ private PlexusContainer container;
+
+ private ScmManager scmManager;
+
+ private static final String SNAPSHOT = "-SNAPSHOT";
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ try
+ {
+ initScmManager();
+ }
+ catch ( Exception e )
+ {
+ throw new MojoExecutionException( "Can't initialize ReleaseMojo.", e );
+ }
+
+ try
+ {
+ prepareRelease();
+
+ performRelease();
+ }
+ finally
+ {
+ releaseScmManager();
+ }
+ }
+
+ private void prepareRelease()
+ throws MojoExecutionException
+ {
+ //checkStatus();
+
+ checkDependencies();
+
+ transformPom();
+
+ //commit();
+
+ //tag();
+ }
+
+ private void performRelease()
+ throws MojoExecutionException
+ {
+ //checkout();
+ }
+
+ private boolean isSnapshot( String version )
+ {
+ return version.endsWith( SNAPSHOT );
+ }
+
+ private ScmBean getScm()
+ {
+ ScmBean scm = new ScmBean();
+ scm.setScmManager( scmManager );
+ scm.setUrl( urlScm );
+ scm.setTag( tag );
+ scm.setTagBase( tagBase );
+ scm.setUsername( username );
+ scm.setPassword( password );
+ scm.setWorkingDirectory( workingDirectory );
+ return scm;
+ }
+
+ private void checkDependencies()
+ throws MojoExecutionException
+ {
+ MavenProject currentProject = project;
+ while ( currentProject.hasParent() )
+ {
+ Artifact parentArtifact = currentProject.getParentArtifact();
+
+ if ( isSnapshot( parentArtifact.getVersion() ) )
+ {
+// throw new MojoExecutionException( "Can't release project due to non released parent." );
+ }
+
+ currentProject = project.getParent();
+ }
+
+ List snapshotDependencies = new ArrayList();
+
+ for ( Iterator i = dependencies.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+ if ( isSnapshot( artifact.getVersion() ) )
+ {
+ snapshotDependencies.add( artifact );
+ }
+ }
+ for ( Iterator i = plugins.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+ if ( isSnapshot( artifact.getVersion() ) )
+ {
+ snapshotDependencies.add( artifact );
+ }
+ }
+ if ( !snapshotDependencies.isEmpty() )
+ {
+ Collections.sort( snapshotDependencies );
+ StringBuffer message = new StringBuffer();
+ for ( Iterator i = snapshotDependencies.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+ message.append( " " );
+ message.append( artifact.getGroupId() );
+ message.append( ":" );
+ message.append( artifact.getArtifactId() );
+ message.append( ":" );
+ message.append( artifact.getVersion() );
+ message.append( "\n" );
+ }
+// throw new MojoExecutionException( "Can't release project due to non released dependencies :\n" +
+// message.toString() );
+ }
+ }
+
+ private void checkStatus()
+ throws MojoExecutionException
+ {
+ List changedFiles;
+ try
+ {
+ ScmBean scm = getScm();
+ scm.setWorkingDirectory( basedir );
+ changedFiles = scm.getStatus();
+ }
+ catch ( ScmException e )
+ {
+ throw new MojoExecutionException( "An error is occurred in the status process.", e );
+ }
+ finally
+ {
+ releaseScmManager();
+ }
+
+ if ( !changedFiles.isEmpty() )
+ {
+ StringBuffer message = new StringBuffer();
+ for ( Iterator i = changedFiles.iterator(); i.hasNext(); )
+ {
+ ScmFile file = (ScmFile) i.next();
+ message.append( file.toString() );
+ message.append( "\n" );
+ }
+ throw new MojoExecutionException( "You have some uncommitted files : \n" + message.toString() );
+ }
+ }
+
+ private void transformPom()
+ throws MojoExecutionException
+ {
+ Model model = project.getModel();
+ if ( !isSnapshot( model.getVersion() ) )
+ {
+ throw new MojoExecutionException( "This project isn't a snapshot (" + model.getVersion() + ")." );
+ }
+
+ //Rewrite project version
+ model.setVersion( model.getVersion().substring( 0, model.getVersion().length() - SNAPSHOT.length() ) );
+
+ //Rewrite parent version
+ if ( project.hasParent() )
+ {
+ if ( isSnapshot( project.getParentArtifact().getBaseVersion() ) )
+ {
+ model.getParent().setVersion( project.getParentArtifact().getVersion() );
+ }
+ }
+
+ //Rewrite dependencies version
+ for ( Iterator i = dependencies.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+ if ( isSnapshot( artifact.getBaseVersion() ) )
+ {
+ for ( Iterator j = model.getDependencies().iterator(); j.hasNext(); )
+ {
+ Dependency dependency = (Dependency) j.next();
+ if ( artifact.getGroupId().equals( dependency.getGroupId() ) &&
+ artifact.getArtifactId().equals( dependency.getArtifactId() ) &&
+ artifact.getBaseVersion().equals( dependency.getVersion() ) &&
+ artifact.getType().equals( dependency.getType() ) )
+ {
+ dependency.setVersion( artifact.getVersion() );
+ }
+ }
+ }
+ }
+
+ //Rewrite plugins version
+ //TODO Resolve version
+ for ( Iterator i = plugins.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+ if ( isSnapshot( artifact.getBaseVersion() ) )
+ {
+ for ( Iterator j = model.getBuild().getPlugins().iterator(); j.hasNext(); )
+ {
+ Plugin plugin = (Plugin) j.next();
+ if ( artifact.getGroupId().equals( plugin.getGroupId() ) &&
+ artifact.getArtifactId().equals( plugin.getArtifactId() ) )
+ {
+ plugin.setGroupId( artifact.getGroupId() );
+ plugin.setVersion( artifact.getVersion() );
+ }
+ }
+ }
+ }
+
+ MavenXpp3Writer modelWriter = new MavenXpp3Writer();
+ try
+ {
+ //TODO: Write in pom file
+ java.io.StringWriter writer = new java.io.StringWriter();
+ modelWriter.write( writer, model );
+ getLog().info( writer.toString() );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Can't update pom.", e );
+ }
+ }
+
+ private void tag()
+ throws MojoExecutionException
+ {
+ try
+ {
+ getScm().tag();
+ }
+ catch ( Exception e )
+ {
+ throw new MojoExecutionException( "An error is occurred in the tag process.", e );
+ }
+ }
+
+ private void checkout()
+ throws MojoExecutionException
+ {
+ try
+ {
+ getScm().checkout();
+ }
+ catch ( Exception e )
+ {
+ throw new MojoExecutionException( "An error is occurred in the checkout process.", e );
+ }
+ }
+
+ private void initScmManager()
+ throws Exception
+ {
+ scmManager = (ScmManager) container.lookup( ScmManager.ROLE );
+ }
+
+ private void releaseScmManager()
+ {
+ try
+ {
+ container.release( scmManager );
+ }
+ catch ( Exception e )
+ {
+ getLog().warn( "Error releasing component - ignoring", e );
+ }
+ }
+
+ public void contextualize( Context context )
+ throws ContextException
+ {
+ container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+ }
+}
Added: 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=170406&view=auto
==============================================================================
--- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java (added)
+++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugin/scm/ScmBean.java Mon May 16 09:27:51 2005
@@ -0,0 +1,255 @@
+package org.apache.maven.plugin.scm;
+
+/* ====================================================================
+ * 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.scm.ScmException;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.codehaus.plexus.embed.Embedder;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * A bean for using the Maven SCM API.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id: DoxiaMojo.java 169372 2005-05-09 22:47:34Z evenisse $
+ */
+public class ScmBean
+{
+ private String username;
+
+ private String password;
+
+ private String url;
+
+ private String tag;
+
+ private String workingDirectory;
+
+ // note - this should not have a setter
+ private File checkoutDirectory;
+
+ private String tagBase;
+
+ private ScmManager scmManager;
+
+ private ScmManager getScmManager()
+ throws ScmException
+ {
+ if ( scmManager == null )
+ {
+ throw new ScmException( "scmManager isn't define." );
+ }
+
+ return scmManager;
+ }
+
+ private ScmRepository getScmRepository()
+ throws ScmException
+ {
+ ScmRepository repository;
+
+ try
+ {
+ repository = getScmManager().makeScmRepository( url );
+
+ if ( repository.getProvider().equals( "svn" ) )
+ {
+ SvnScmProviderRepository svnRepo = (SvnScmProviderRepository) repository.getProviderRepository();
+
+ if ( username != null && username.length() > 0 )
+ {
+ svnRepo.setUser( username );
+ }
+ if ( password != null && password.length() > 0 )
+ {
+ svnRepo.setPassword( password );
+ }
+ if ( tagBase != null && tagBase.length() > 0 )
+ {
+ svnRepo.setTagBase( tagBase );
+ }
+ }
+ }
+ catch( Exception e )
+ {
+ throw new ScmException( "Can't load the scm provider.", e );
+ }
+
+ return repository;
+ }
+
+ private void checkResult( ScmResult result )
+ throws ScmException
+ {
+ if ( !result.isSuccess() )
+ {
+ // 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!" );
+ }
+ }
+
+ public void checkout()
+ throws ScmException, IOException
+ {
+ ScmRepository repository = getScmRepository();
+
+ checkoutDirectory = new File( workingDirectory );
+ if ( checkoutDirectory.exists() )
+ {
+ // TODO: sanity check that it is not . or .. or lower
+ FileUtils.deleteDirectory( checkoutDirectory );
+ }
+ checkoutDirectory.mkdirs();
+
+ CheckOutScmResult result = getScmManager().checkOut( repository, new ScmFileSet( checkoutDirectory ), tag );
+
+ checkResult( result );
+ }
+
+ public void update()
+ throws ScmException
+ {
+ ScmRepository repository = getScmRepository();
+
+ checkoutDirectory = new File( workingDirectory );
+
+ // TODO: want includes/excludes?
+ UpdateScmResult result = getScmManager().update( repository, new ScmFileSet( new File( workingDirectory ) ), tag );
+
+ checkResult( result );
+ }
+
+ public List getStatus()
+ throws ScmException
+ {
+ List changedFiles;
+
+ ScmRepository repository = getScmRepository();
+
+ // TODO: want includes/excludes?
+ StatusScmResult result = getScmManager().status( repository, new ScmFileSet( new File( workingDirectory ) ) );
+
+ checkResult( result );
+
+ changedFiles = result.getChangedFiles();
+
+ return changedFiles;
+ }
+
+ public void tag()
+ throws ScmException
+ {
+ ScmRepository repository = getScmRepository();
+
+ // TODO: want includes/excludes?
+ TagScmResult result = getScmManager().tag( repository, new ScmFileSet( new File( workingDirectory ) ), tag );
+
+ checkResult( result );
+ }
+
+ public void setScmManager( ScmManager scmManager )
+ {
+ this.scmManager = scmManager;
+ }
+
+ public void setUrl( String url )
+ {
+ this.url = url;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setTag( String tag )
+ {
+ this.tag = tag;
+ }
+
+ public String getTag()
+ {
+ return tag;
+ }
+
+ public void setWorkingDirectory( String workingDirectory )
+ {
+ this.workingDirectory = workingDirectory;
+ }
+
+ public String getWorkingDirectory()
+ {
+ return workingDirectory;
+ }
+
+ public File getCheckoutDirectory()
+ {
+ return checkoutDirectory;
+ }
+
+ public String getTagBase()
+ {
+ return tagBase;
+ }
+
+ public void setTagBase( String tagBase )
+ {
+ this.tagBase = tagBase;
+ }
+
+ public String getUsername()
+ {
+ return username;
+ }
+
+ public void setUsername( String username )
+ {
+ this.username = username;
+ }
+
+ public String getPassword()
+ {
+ return password;
+ }
+
+ public void setPassword( String password )
+ {
+ this.password = password;
+ }
+}
+
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=170406&r1=170405&r2=170406&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Mon May 16 09:27:51 2005
@@ -25,11 +25,13 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.transform.ReleaseArtifactTransformation;
import org.apache.maven.model.Build;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
+import org.apache.maven.model.Plugin;
import org.apache.maven.model.Repository;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
@@ -279,8 +281,20 @@
}
project.setParent( parentProject );
+
+ if ( parentProject != null )
+ {
+ Artifact parentArtifact = artifactFactory.createArtifact( parentProject.getGroupId(),
+ parentProject.getArtifactId(),
+ parentProject.getVersion(),
+ null,
+ "pom", null );
+ project.setParentArtifact( parentArtifact );
+ }
+
project.setRemoteArtifactRepositories( remoteRepositories );
project.setArtifacts( createArtifacts( project.getDependencies() ) );
+ project.setPluginArtifacts( createPluginArtifacts( project.getBuildPlugins() ) );
ModelValidationResult validationResult = validator.validate( model );
@@ -336,6 +350,8 @@
MavenProject parent = assembleLineage( model, lineage, aggregatedRemoteWagonRepositories, localRepository );
project.setParent( parent );
+
+ project.setParentArtifact( artifact );
}
return project;
@@ -477,6 +493,35 @@
}
return projectArtifacts;
+ }
+
+ protected Set createPluginArtifacts( List plugins )
+ {
+ Set pluginArtifacts = new HashSet();
+
+ for ( Iterator i = plugins.iterator(); i.hasNext(); )
+ {
+ Plugin p = (Plugin) i.next();
+
+ String version;
+ if ( StringUtils.isEmpty( p.getVersion() ) )
+ {
+ version = ReleaseArtifactTransformation.RELEASE_VERSION;
+ }
+ else
+ {
+ version = p.getVersion();
+ }
+
+ Artifact artifact = artifactFactory.createArtifact( p.getGroupId(), p.getArtifactId(), version,
+ null, "maven-plugin", null );
+ if ( artifact != null )
+ {
+ pluginArtifacts.add( artifact );
+ }
+ }
+
+ return pluginArtifacts;
}
public MavenProject buildStandaloneSuperProject( ArtifactRepository localRepository )
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=170406&r1=170405&r2=170406&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Mon May 16 09:27:51 2005
@@ -73,6 +73,10 @@
private Set artifacts;
+ private Artifact parentArtifact;
+
+ private Set pluginArtifacts;
+
private List remoteArtifactRepositories;
private List collectedProjects = Collections.EMPTY_LIST;
@@ -666,6 +670,26 @@
public Set getArtifacts()
{
return artifacts;
+ }
+
+ public void setPluginArtifacts( Set pluginArtifacts )
+ {
+ this.pluginArtifacts = pluginArtifacts;
+ }
+
+ public Set getPluginArtifacts()
+ {
+ return pluginArtifacts;
+ }
+
+ public void setParentArtifact( Artifact parentArtifact )
+ {
+ this.parentArtifact = parentArtifact;
+ }
+
+ public Artifact getParentArtifact()
+ {
+ return parentArtifact;
}
public List getRepositories()
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org