Resolving: MNG-920, and setting the version of maven-release-plugin to a rev of -beta-1 instead of -SNAPSHOT, to allow locally installed versions to work without tweaking the version locally.

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@290276 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
John Dennis Casey 2005-09-19 21:24:40 +00:00
parent 75db8085e8
commit 74de0709de
4 changed files with 526 additions and 4 deletions

View File

@ -28,4 +28,16 @@
</dependency>
</dependencies>
<profiles>
<profile>
<id>env-test</id>
<activation>
<property>
<name>env</name>
<value>test</value>
</property>
</activation>
</profile>
</profiles>
</project>

View File

@ -8,7 +8,7 @@
<artifactId>maven-release-plugin</artifactId>
<packaging>maven-plugin</packaging>
<name>Maven Release plugin</name>
<version>2.0-beta-2-SNAPSHOT</version>
<version>2.0-beta-1-rev1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>

View File

@ -29,13 +29,13 @@
<dependency>
<groupId>surefire</groupId>
<artifactId>surefire</artifactId>
<version>1.3</version>
<version>1.4-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>surefire</groupId>
<artifactId>surefire-booter</artifactId>
<version>1.3</version>
<version>1.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>plexus</groupId>
@ -44,4 +44,4 @@
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
</project>

View File

@ -16,16 +16,32 @@ package org.apache.maven.project;
* limitations under the License.
*/
import org.apache.maven.model.Activation;
import org.apache.maven.model.ActivationFile;
import org.apache.maven.model.ActivationProperty;
import org.apache.maven.model.Build;
import org.apache.maven.model.BuildBase;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Goal;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginContainer;
import org.apache.maven.model.PluginExecution;
import org.apache.maven.model.PluginManagement;
import org.apache.maven.model.Profile;
import org.apache.maven.model.Relocation;
import org.apache.maven.model.ReportPlugin;
import org.apache.maven.model.ReportSet;
import org.apache.maven.model.Reporting;
import org.apache.maven.model.Repository;
import org.apache.maven.model.RepositoryBase;
import org.apache.maven.model.RepositoryPolicy;
import org.apache.maven.model.Resource;
import org.apache.maven.model.Site;
import org.apache.maven.project.inheritance.DefaultModelInheritanceAssembler;
import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@ -470,11 +486,505 @@ public final class ModelUtils
newModel.setGroupId( model.getGroupId() );
newModel.setPackaging( model.getPackaging() );
newModel.setModules( cloneModules( model.getModules() ) );
newModel.setProfiles( cloneProfiles( model.getProfiles() ) );
assembler.copyModel( newModel, model );
return newModel;
}
private static List cloneProfiles( List profiles )
{
if ( profiles == null )
{
return profiles;
}
List newProfiles = new ArrayList( profiles.size() );
for ( Iterator it = profiles.iterator(); it.hasNext(); )
{
Profile profile = (Profile) it.next();
Profile newProfile = new Profile();
newProfile.setId(profile.getId());
newProfile.setActivation( cloneProfileActivation( profile.getActivation() ) );
newProfile.setBuild( cloneProfileBuild( profile.getBuild() ) );
newProfile.setDependencies( cloneProfileDependencies( profile.getDependencies() ) );
DependencyManagement dm = profile.getDependencyManagement();
if ( dm != null )
{
DependencyManagement newDM = new DependencyManagement();
newDM.setDependencies( cloneProfileDependencies( dm.getDependencies() ) );
newProfile.setDependencyManagement( newDM );
}
newProfile.setDistributionManagement( cloneProfileDistributionManagement( profile.getDistributionManagement() ) );
List modules = profile.getModules();
if ( modules != null && !modules.isEmpty() )
{
newProfile.setModules( new ArrayList( modules ) );
}
newProfile.setPluginRepositories( cloneProfileRepositories( profile.getPluginRepositories() ) );
Properties props = profile.getProperties();
if ( props != null )
{
newProfile.setProperties( new Properties( props ) );
}
newProfile.setReporting( cloneProfileReporting( profile.getReporting() ) );
newProfile.setReports( profile.getReports() );
newProfile.setRepositories( cloneProfileRepositories( profile.getRepositories() ) );
newProfile.setSource(profile.getSource() );
newProfiles.add( newProfile );
}
return newProfiles;
}
private static Reporting cloneProfileReporting( Reporting reporting )
{
Reporting newR = null;
if ( reporting != null )
{
newR = new Reporting();
newR.setOutputDirectory(reporting.getOutputDirectory());
List newP = null;
List plugins = reporting.getPlugins();
if ( plugins != null )
{
newP = new ArrayList( plugins.size() );
for ( Iterator it = plugins.iterator(); it.hasNext(); )
{
ReportPlugin plugin = (ReportPlugin) it.next();
ReportPlugin newPlugin = new ReportPlugin();
newPlugin.setArtifactId(plugin.getArtifactId());
newPlugin.setGroupId(plugin.getGroupId());
newPlugin.setVersion(plugin.getVersion());
newPlugin.setInherited(plugin.getInherited());
newPlugin.setReportSets( cloneReportSets( plugin.getReportSets() ) );
// TODO: Implement deep-copy of configuration.
newPlugin.setConfiguration(plugin.getConfiguration());
newP.add( newPlugin );
}
newR.setPlugins(newP);
}
}
return newR;
}
private static List cloneReportSets( List sets )
{
List newSets = null;
if ( sets != null )
{
newSets = new ArrayList( sets.size() );
for ( Iterator it = sets.iterator(); it.hasNext(); )
{
ReportSet set = (ReportSet) it.next();
ReportSet newSet = new ReportSet();
// TODO: Deep-copy config.
newSet.setConfiguration(set.getConfiguration());
newSet.setId(set.getId());
newSet.setInherited(set.getInherited());
newSet.setReports(new ArrayList( set.getReports() ));
newSets.add( newSet );
}
}
return newSets;
}
private static List cloneProfileRepositories( List repos )
{
List newRepos = null;
if ( repos != null )
{
newRepos = new ArrayList( repos.size() );
for ( Iterator it = repos.iterator(); it.hasNext(); )
{
Repository repo = (Repository) it.next();
Repository newRepo = new Repository();
newRepo.setChecksumPolicy(repo.getChecksumPolicy());
newRepo.setId(repo.getId());
newRepo.setLayout(repo.getLayout());
newRepo.setName(repo.getName());
newRepo.setSnapshotPolicy(repo.getSnapshotPolicy());
RepositoryPolicy releasePolicy = repo.getReleases();
if ( releasePolicy != null )
{
RepositoryPolicy newPolicy = new RepositoryPolicy();
newPolicy.setEnabled(releasePolicy.isEnabled());
newPolicy.setChecksumPolicy(releasePolicy.getChecksumPolicy());
newPolicy.setUpdatePolicy(releasePolicy.getUpdatePolicy());
newRepo.setReleases(newPolicy);
}
RepositoryPolicy snapPolicy = repo.getSnapshots();
if ( snapPolicy != null )
{
RepositoryPolicy newPolicy = new RepositoryPolicy();
newPolicy.setEnabled(snapPolicy.isEnabled());
newPolicy.setChecksumPolicy(snapPolicy.getChecksumPolicy());
newPolicy.setUpdatePolicy(snapPolicy.getUpdatePolicy());
newRepo.setSnapshots(newPolicy);
}
newRepo.setUrl(repo.getUrl());
newRepos.add( newRepo );
}
}
return newRepos;
}
private static DistributionManagement cloneProfileDistributionManagement( DistributionManagement dm )
{
DistributionManagement newDM = null;
if ( dm != null )
{
newDM = new DistributionManagement();
newDM.setDownloadUrl(dm.getDownloadUrl() );
newDM.setStatus(dm.getStatus());
Relocation relocation = dm.getRelocation();
if ( relocation != null )
{
Relocation newR = new Relocation();
newR.setArtifactId(relocation.getArtifactId());
newR.setGroupId(relocation.getGroupId());
newR.setMessage(relocation.getMessage());
newR.setVersion(relocation.getVersion());
newDM.setRelocation(newR);
}
RepositoryBase repo = dm.getRepository();
if ( repo != null )
{
RepositoryBase newRepo = new RepositoryBase();
newRepo.setId(repo.getId());
newRepo.setLayout(repo.getLayout());
newRepo.setName(repo.getName());
newRepo.setUrl(repo.getUrl());
newDM.setRepository(newRepo);
}
Site site = dm.getSite();
if ( site != null )
{
Site newSite = new Site();
newSite.setId(site.getId());
newSite.setName(site.getName());
newSite.setUrl(site.getUrl());
newDM.setSite(newSite);
}
RepositoryBase sRepo = dm.getSnapshotRepository();
if ( sRepo != null )
{
RepositoryBase newRepo = new RepositoryBase();
newRepo.setId(sRepo.getId());
newRepo.setLayout(sRepo.getLayout());
newRepo.setName(sRepo.getName());
newRepo.setUrl(sRepo.getUrl());
newDM.setSnapshotRepository(newRepo);
}
}
return newDM;
}
private static List cloneProfileDependencies( List dependencies )
{
List newDependencies = null;
if ( dependencies != null )
{
newDependencies = new ArrayList( dependencies.size() );
for ( Iterator it = dependencies.iterator(); it.hasNext(); )
{
Dependency dep = (Dependency) it.next();
Dependency newDep = new Dependency();
newDep.setArtifactId(dep.getArtifactId());
newDep.setClassifier(dep.getClassifier());
newDep.setExclusions( cloneDependencyExclusions( dep.getExclusions() ) );
newDep.setGroupId(dep.getGroupId());
newDep.setScope(dep.getScope());
newDep.setSystemPath(dep.getSystemPath());
newDep.setType(dep.getType());
newDep.setVersion(dep.getVersion());
newDependencies.add( newDep );
}
}
return newDependencies;
}
private static List cloneDependencyExclusions( List ex )
{
List newEx = null;
if ( ex != null )
{
newEx = new ArrayList( ex.size() );
for ( Iterator it = ex.iterator(); it.hasNext(); )
{
Exclusion exclusion = (Exclusion) it.next();
Exclusion newExclusion = new Exclusion();
newExclusion.setArtifactId(exclusion.getArtifactId() );
newExclusion.setGroupId( exclusion.getGroupId() );
newEx.add( newExclusion );
}
}
return newEx;
}
private static BuildBase cloneProfileBuild( BuildBase build )
{
BuildBase newBuild = null;
if ( build != null )
{
newBuild = new BuildBase();
newBuild.setDefaultGoal(build.getDefaultGoal());
newBuild.setDirectory(build.getDirectory());
newBuild.setFinalName(build.getFinalName());
newBuild.setPluginManagement( cloneProfilePluginManagement( build.getPluginManagement() ) );
newBuild.setPlugins( cloneProfilePlugins( build.getPlugins() ) );
newBuild.setResources( cloneProfileResources( build.getResources() ) );
newBuild.setTestResources( cloneProfileResources( build.getTestResources() ) );
}
return newBuild;
}
private static List cloneProfileResources( List resources )
{
List newResources = null;
if ( resources != null )
{
newResources = new ArrayList( resources.size() );
for ( Iterator it = resources.iterator(); it.hasNext(); )
{
Resource resource = (Resource) it.next();
Resource newResource = new Resource();
newResource.setDirectory(resource.getDirectory());
newResource.setExcludes(new ArrayList( resource.getExcludes()));
newResource.setFiltering(resource.isFiltering());
newResource.setIncludes(new ArrayList( resource.getIncludes()));
newResource.setTargetPath(resource.getTargetPath());
newResources.add( newResource );
}
}
return newResources;
}
private static PluginManagement cloneProfilePluginManagement( PluginManagement pluginManagement )
{
PluginManagement newPM = null;
if ( pluginManagement != null )
{
newPM = new PluginManagement();
List plugins = pluginManagement.getPlugins();
newPM.setPlugins( cloneProfilePlugins( plugins ) );
}
return newPM;
}
private static List cloneProfilePlugins( List plugins )
{
List newPlugins = null;
if ( plugins != null )
{
newPlugins = new ArrayList( plugins.size() );
for ( Iterator it = plugins.iterator(); it.hasNext(); )
{
Plugin plugin = (Plugin) it.next();
Plugin newPlugin = new Plugin();
newPlugin.setArtifactId(plugin.getArtifactId());
newPlugin.setExtensions(plugin.isExtensions());
newPlugin.setGroupId(plugin.getGroupId());
newPlugin.setInherited(plugin.getInherited());
newPlugin.setVersion(plugin.getVersion());
// TODO: Deep-copy this!
newPlugin.setConfiguration(plugin.getConfiguration());
List goals = plugin.getGoals();
if ( goals != null && !goals.isEmpty() )
{
List newGoals = new ArrayList( goals );
newPlugin.setGoals(newGoals);
}
newPlugin.setExecutions( cloneExecutions( plugin.getExecutions() ));
newPlugins.add( newPlugin );
}
}
return newPlugins;
}
private static List cloneExecutions( List executions )
{
List newExecs = null;
if ( executions != null )
{
newExecs = new ArrayList( executions.size() );
for ( Iterator it = executions.iterator(); it.hasNext(); )
{
PluginExecution exec = (PluginExecution) it.next();
PluginExecution newExec = new PluginExecution();
// TODO: Deep-copy configs.
newExec.setConfiguration(exec.getConfiguration());
newExec.setId(exec.getId());
newExec.setInherited(exec.getInherited());
newExec.setPhase(exec.getPhase());
List goals = exec.getGoals();
if ( goals != null && !goals.isEmpty() )
{
newExec.setGoals( new ArrayList( goals ) );
}
newExecs.add( newExec );
}
}
return newExecs;
}
private static Activation cloneProfileActivation( Activation activation )
{
Activation newActivation = null;
if ( activation != null )
{
newActivation = new Activation();
newActivation.setActiveByDefault(activation.isActiveByDefault());
ActivationFile af = activation.getFile();
if ( af != null )
{
ActivationFile afNew = new ActivationFile();
afNew.setExists(af.getExists());
afNew.setMissing(af.getMissing());
newActivation.setFile(afNew);
}
newActivation.setJdk(activation.getJdk());
ActivationProperty ap = activation.getProperty();
if ( ap != null )
{
ActivationProperty newAp = new ActivationProperty();
newAp.setName(ap.getName());
newAp.setValue(ap.getValue());
newActivation.setProperty(newAp);
}
}
return newActivation;
}
private static List cloneModules( List modules )
{
if ( modules == null )