You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2009/04/30 20:55:26 UTC
svn commit: r770395 - in /maven/components/branches/MNG-2766:
maven-core/src/main/java/org/apache/maven/project/
maven-core/src/test/java/org/apache/maven/project/
maven-model-builder/src/main/java/org/apache/maven/model/
maven-model-builder/src/main/j...
Author: sisbell
Date: Thu Apr 30 18:55:26 2009
New Revision: 770395
URL: http://svn.apache.org/viewvc?rev=770395&view=rev
Log:
Fixes for merging in plugin config. Needed to do copy of plugins and config.
Modified:
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Thu Apr 30 18:55:26 2009
@@ -42,10 +42,12 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.ModelEventListener;
import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
import org.apache.maven.model.ProcessorContext;
import org.apache.maven.model.Profile;
import org.apache.maven.model.interpolator.Interpolator;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.model.processors.PluginProcessor;
import org.apache.maven.profiles.DefaultProfileManager;
import org.apache.maven.profiles.ProfileActivationException;
import org.apache.maven.profiles.ProfileManager;
@@ -61,6 +63,7 @@
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
/**
* @version $Id$
@@ -117,6 +120,7 @@
try
{
domainModel = build( "unknown", pomFile, configuration );
+
}
catch (IOException e)
{
@@ -155,27 +159,72 @@
}
domainModel = ProcessorContext.mergeProfilesIntoModel( externalProfiles, domainModel );
+
}
catch ( IOException e )
{
throw new ProjectBuildingException("", "");
}
-
+
//Interpolation & Management
MavenProject project;
try
{
Model model = interpolateDomainModel( domainModel, configuration, pomFile );
+
+ List<Plugin> plns = new ArrayList<Plugin>();
+
Set<Plugin> plugins = lifecycle.getPluginsBoundByDefaultToAllLifecycles(model.getPackaging());
- ProcessorContext.addPluginsToModel(model, plugins);
+
+ addPluginsToModel(model, plugins);
+
ProcessorContext.processManagementNodes(model);
+
project = this.fromDomainModelToMavenProject(model, domainModel.getParentFile(), configuration, pomFile);
-
- plugins = lifecycle.populateDefaultConfigurationForPlugins(new HashSet<Plugin>(model.getBuild().getPlugins()),
+
+ ArrayList<Plugin> pln = new ArrayList<Plugin>();
+ for(Plugin p : project.getModel().getBuild().getPlugins())
+ {
+ Plugin copy = new Plugin();
+ PluginProcessor.copy2(p, copy, true);
+ pln.add(copy);
+ }
+
+ Set<Plugin> pl = lifecycle.populateDefaultConfigurationForPlugins(new HashSet<Plugin>(pln),
project, configuration.getLocalRepository());
+ /*
+ if(model.getArtifactId() != null &&
+ model.getArtifactId().equals("maven-model"))
+ {
+ System.out.println(new DomainModel(project.getModel()).asString());
+ }
+ */
+
+ for (Plugin buildPlugin : pl) {
+ Xpp3Dom dom = (Xpp3Dom) buildPlugin.getConfiguration();
+ Plugin x = containsPlugin(buildPlugin, project.getModel()
+ .getBuild().getPlugins());
+
+ for (PluginExecution e : buildPlugin.getExecutions()) {
+ for (String g : e.getGoals()) {
+ if (x != null) {
+ PluginExecution pe = contains(g, x.getExecutions());
+ if (pe != null) {
+ Xpp3Dom dom1 = Xpp3Dom.mergeXpp3Dom(
+ (Xpp3Dom) pe.getConfiguration(),
+ (Xpp3Dom) e.getConfiguration());
+ e.setConfiguration(dom1);
+ }
+ }
+ Xpp3Dom dom1 = Xpp3Dom.mergeXpp3Dom((Xpp3Dom) e
+ .getConfiguration(), dom);
+ e.setConfiguration(dom1);
+ }
+ }
- project.getModel().getBuild().setPlugins(new ArrayList<Plugin>(plugins));
+ }
+ project.getModel().getBuild().setPlugins(new ArrayList<Plugin>(pl));
}
catch (IOException e)
{
@@ -186,7 +235,6 @@
e.printStackTrace();
throw new ProjectBuildingException("",e.getMessage());
}
-
project.setActiveProfiles( projectProfiles );
Build build = project.getBuild();
@@ -203,6 +251,56 @@
return project;
}
+
+
+
+ private static PluginExecution contains(String goal, List<PluginExecution> plugins)
+ {
+ for(PluginExecution pe : plugins)
+ {
+ if(pe.getGoals().contains(goal))
+ {
+ return pe;
+ }
+ }
+ return null;
+ }
+
+ public static void addPluginsToModel(Model target, Set<Plugin> plugins)
+ {
+ List<Plugin> mPlugins = new ArrayList<Plugin>(target.getBuild().getPlugins());
+
+ List<Plugin> lifecyclePlugins = new ArrayList<Plugin>();
+
+ for( Plugin p : plugins )
+ {
+ Plugin mPlugin = containsPlugin( p, mPlugins);
+ if( mPlugin == null)
+ {
+ lifecyclePlugins.add(p);
+ }
+ else if(p.getConfiguration() != null)
+ {
+ System.out.println(Xpp3Dom.mergeXpp3Dom((Xpp3Dom) p.getConfiguration(), (Xpp3Dom) mPlugin.getConfiguration()));
+ }
+ }
+ mPlugins.addAll(lifecyclePlugins);
+ target.getBuild().setPlugins(mPlugins);
+
+ }
+
+ private static Plugin containsPlugin(Plugin plugin, List<Plugin> plugins)
+ {
+ for(Plugin p : plugins)
+ {
+ if( p.getGroupId().equals(plugin.getGroupId()) && p.getArtifactId().equals(plugin.getArtifactId()))
+ {
+ return p;
+ }
+ }
+
+ return null;
+ }
public MavenProject buildFromRepository(Artifact artifact, ProjectBuilderConfiguration configuration )
throws ProjectBuildingException
@@ -618,7 +716,17 @@
Artifact artifactParent = repositorySystem.createProjectArtifact( domainModel.getParentGroupId(), domainModel.getParentArtifactId(), domainModel.getParentVersion() );
ArtifactResolutionRequest request = new ArtifactResolutionRequest( artifactParent, localRepository, remoteRepositories );
- ArtifactResolutionResult result = repositorySystem.resolve( request );
+ ArtifactResolutionResult result;
+ try
+ {
+ result = repositorySystem.resolve( request );
+ }
+ catch (Exception e)
+ {
+ throw (IOException) new IOException( "The parent POM " + artifactParent
+ + " could not be retrieved from any repository" ).initCause( e );
+ }
+
try
{
resolutionErrorHandler.throwErrors( request, result );
Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java Thu Apr 30 18:55:26 2009
@@ -1434,7 +1434,13 @@
{
PomTestWrapper pom = buildPom( "dependency-management-with-interpolation/sub" );
}
-
+
+ public void testMaven()
+ throws Exception
+ {
+ PomTestWrapper pom = buildPom( "maven/sub" );
+ System.out.println(pom.getDomainModel().asString());
+ }
private void assertPathSuffixEquals( String expected, Object actual )
{
Modified: maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java (original)
+++ maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java Thu Apr 30 18:55:26 2009
@@ -256,37 +256,6 @@
build.addPlugin(p1);
}
- public static void addPluginsToModel(Model target, Set<Plugin> plugins)
- {
- List<Plugin> mPlugins = target.getBuild().getPlugins();
-
- List<Plugin> lifecyclePlugins = new ArrayList<Plugin>();
-
- for( Plugin p : plugins )
- {
- if( !containsPlugin( p, mPlugins) )
- {
- lifecyclePlugins.add(p);
- }
- }
-
- target.getBuild().getPlugins().addAll(lifecyclePlugins);
-
- }
-
- private static boolean containsPlugin(Plugin plugin, List<Plugin> plugins)
- {
- for(Plugin p : plugins)
- {
- if( p.getGroupId().equals(plugin.getGroupId()) && p.getArtifactId().equals(plugin.getArtifactId()))
- {
- return true;
- }
- }
-
- return false;
- }
-
public static Model processManagementNodes(Model target)
throws IOException
{
Modified: maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java?rev=770395&r1=770394&r2=770395&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java (original)
+++ maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/processors/PluginProcessor.java Thu Apr 30 18:55:26 2009
@@ -26,6 +26,7 @@
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginExecution;
import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.Xpp3DomUtils;
public class PluginProcessor
extends BaseProcessor
@@ -175,7 +176,7 @@
* @param target
* @param isChild
*/
- private static void copy2(Plugin source, Plugin target, boolean isChild)
+ public static void copy2(Plugin source, Plugin target, boolean isChild)
{
if(!isChild && source.getInherited() != null && !source.getInherited().equalsIgnoreCase( "true" ))
{
@@ -223,11 +224,11 @@
//TODO: Not copying
if(target.getConfiguration() != null)
{
- target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ));
+ target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )));
}
else
{
- target.setConfiguration( source.getConfiguration() );
+ target.setConfiguration( new Xpp3Dom((Xpp3Dom) source.getConfiguration() ) );
}
}
@@ -283,11 +284,11 @@
//TODO: Not copying
if(target.getConfiguration() != null)
{
- target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ));
+ target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ) ));
}
else
{
- target.setConfiguration( source.getConfiguration() );
+ target.setConfiguration( new Xpp3Dom((Xpp3Dom) source.getConfiguration() ) );
}
}
@@ -347,11 +348,11 @@
{
if(target.getConfiguration() != null)
{
- target.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() ));
+ target.setConfiguration( new Xpp3Dom(Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) source.getConfiguration(), (Xpp3Dom) target.getConfiguration() )));
}
else
{
- target.setConfiguration( source.getConfiguration() );
+ target.setConfiguration( new Xpp3Dom( (Xpp3Dom) source.getConfiguration()) );
}
}