mirror of https://github.com/apache/maven.git
Fixed various ordering of element problems during plugin management joins.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@737812 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1c2b979977
commit
702ed0b0dd
|
@ -177,7 +177,7 @@ public class PomTransformer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean joinedContainer = false;
|
List<ModelProperty> joinedContainers = new ArrayList<ModelProperty>();
|
||||||
for ( ModelContainer pluginContainer : source.queryFor( ProjectUri.Build.Plugins.Plugin.xUri ) )
|
for ( ModelContainer pluginContainer : source.queryFor( ProjectUri.Build.Plugins.Plugin.xUri ) )
|
||||||
{
|
{
|
||||||
for ( ModelContainer managementContainer : source.queryFor( ProjectUri.Build.PluginManagement.Plugins.Plugin.xUri ) )
|
for ( ModelContainer managementContainer : source.queryFor( ProjectUri.Build.PluginManagement.Plugins.Plugin.xUri ) )
|
||||||
|
@ -230,7 +230,6 @@ public class PomTransformer
|
||||||
|
|
||||||
if ( action.equals( ModelContainerAction.JOIN ) || action.equals( ModelContainerAction.DELETE ) )
|
if ( action.equals( ModelContainerAction.JOIN ) || action.equals( ModelContainerAction.DELETE ) )
|
||||||
{
|
{
|
||||||
joinedContainer = true;
|
|
||||||
ModelDataSource pluginDatasource = new DefaultModelDataSource( pluginContainer.getProperties(), PomTransformer.MODEL_CONTAINER_FACTORIES );
|
ModelDataSource pluginDatasource = new DefaultModelDataSource( pluginContainer.getProperties(), PomTransformer.MODEL_CONTAINER_FACTORIES );
|
||||||
ModelDataSource managementDatasource = new DefaultModelDataSource( managementContainer.getProperties(), PomTransformer.MODEL_CONTAINER_FACTORIES );
|
ModelDataSource managementDatasource = new DefaultModelDataSource( managementContainer.getProperties(), PomTransformer.MODEL_CONTAINER_FACTORIES );
|
||||||
|
|
||||||
|
@ -241,7 +240,7 @@ public class PomTransformer
|
||||||
managementPropertiesWithoutExecutions.removeAll(a.getProperties());
|
managementPropertiesWithoutExecutions.removeAll(a.getProperties());
|
||||||
}
|
}
|
||||||
//THIS JOIN REVERSES ORDER
|
//THIS JOIN REVERSES ORDER
|
||||||
source.join( pluginContainer, new ArtifactModelContainerFactory().create(managementPropertiesWithoutExecutions) );
|
source.joinWithOriginalOrder( pluginContainer, new ArtifactModelContainerFactory().create(managementPropertiesWithoutExecutions) );
|
||||||
|
|
||||||
List<ModelContainer> pluginExecutionContainers = pluginDatasource.queryFor(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
|
List<ModelContainer> pluginExecutionContainers = pluginDatasource.queryFor(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
|
||||||
List<ModelContainer> joinedExecutionContainers = new ArrayList<ModelContainer>();
|
List<ModelContainer> joinedExecutionContainers = new ArrayList<ModelContainer>();
|
||||||
|
@ -266,13 +265,19 @@ public class PomTransformer
|
||||||
|
|
||||||
for(ModelContainer b : pluginExecutionContainers)
|
for(ModelContainer b : pluginExecutionContainers)
|
||||||
{
|
{
|
||||||
if(b.containerAction(c).equals(ModelContainerAction.JOIN)) //----
|
if(b.containerAction(c).equals(ModelContainerAction.JOIN))
|
||||||
{
|
{
|
||||||
//MNG-3995 - property lost here
|
//MNG-3995 - property lost here
|
||||||
source.join(b, c);
|
joinedContainers.addAll(source.join(b, c).getProperties());
|
||||||
|
// ExecutionRule rule = new ExecutionRule();
|
||||||
|
// List<ModelProperty> x = rule.execute(d.getProperties());
|
||||||
|
// List<ModelProperty> x = (!joinedContainer) ? rule.execute(es.getProperties()) :
|
||||||
|
// ModelTransformerContext.sort(rule.execute(es.getProperties()),
|
||||||
|
// ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
|
||||||
|
|
||||||
|
// source.replace(d, d.createNewInstance(x));
|
||||||
//REVERSE ORDER HERE
|
//REVERSE ORDER HERE
|
||||||
joinedExecutionContainers.add(a);//-----
|
joinedExecutionContainers.add(a);
|
||||||
// Collections.reverse(joinedExecutionContainers);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -363,17 +368,17 @@ public class PomTransformer
|
||||||
new AlwaysJoinModelContainerFactory()));
|
new AlwaysJoinModelContainerFactory()));
|
||||||
for(ModelContainer es : executionSource.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri )) {
|
for(ModelContainer es : executionSource.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri )) {
|
||||||
ExecutionRule rule = new ExecutionRule();
|
ExecutionRule rule = new ExecutionRule();
|
||||||
List<ModelProperty> x = rule.execute(es.getProperties());
|
// List<ModelProperty> x = rule.execute(es.getProperties());
|
||||||
// List<ModelProperty> x = (!joinedContainer) ? rule.execute(es.getProperties()) :
|
List<ModelProperty> x = !aContainsAnyOfB(es.getProperties(), joinedContainers) ? rule.execute(es.getProperties()) :
|
||||||
// ModelTransformerContext.sort(rule.execute(es.getProperties()),
|
ModelTransformerContext.sort(rule.execute(es.getProperties()),
|
||||||
// ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
|
ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
|
||||||
|
|
||||||
dataSource.replace(es, es.createNewInstance(x));
|
dataSource.replace(es, es.createNewInstance(x));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
props = joinedContainer ? ModelTransformerContext.sort(dataSource.getModelProperties(), ProjectUri.baseUri)
|
props =// false ? ModelTransformerContext.sort(dataSource.getModelProperties(), ProjectUri.baseUri)
|
||||||
: dataSource.getModelProperties();
|
dataSource.getModelProperties();
|
||||||
|
|
||||||
for(ModelEventListener listener : eventListeners)
|
for(ModelEventListener listener : eventListeners)
|
||||||
{
|
{
|
||||||
|
@ -411,6 +416,20 @@ public class PomTransformer
|
||||||
return factory.createDomainModel( p );
|
return factory.createDomainModel( p );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean aContainsAnyOfB(List<ModelProperty> a, List<ModelProperty> b) {
|
||||||
|
for(ModelProperty mpA : a )
|
||||||
|
{
|
||||||
|
for(ModelProperty mpB : b)
|
||||||
|
{
|
||||||
|
if(mpA.equals(mpB))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private static List<ModelProperty> transformDependencyManagement( List<ModelProperty> modelProperties )
|
private static List<ModelProperty> transformDependencyManagement( List<ModelProperty> modelProperties )
|
||||||
{
|
{
|
||||||
List<ModelProperty> transformedProperties = new ArrayList<ModelProperty>();
|
List<ModelProperty> transformedProperties = new ArrayList<ModelProperty>();
|
||||||
|
|
|
@ -81,6 +81,14 @@ public class PomConstructionTest
|
||||||
assertModelEquals( tester, "child-descriptor", "build/plugins[1]/executions[1]/goals[1]" );
|
assertModelEquals( tester, "child-descriptor", "build/plugins[1]/executions[1]/goals[1]" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testPluginOrder()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
PomTestWrapper pom = buildPom( "plugin-order" );
|
||||||
|
assertEquals( "plexus-component-metadata", pom.getValue( "build/plugins[1]/artifactId" ) );
|
||||||
|
assertEquals( "maven-surefire-plugin", pom.getValue( "build/plugins[2]/artifactId" ) );
|
||||||
|
}
|
||||||
|
|
||||||
public void testErroneousJoiningOfDifferentPluginsWithEqualDependencies()
|
public void testErroneousJoiningOfDifferentPluginsWithEqualDependencies()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -55,7 +55,7 @@ under the License.
|
||||||
<plexusPluginManagerVersion>1.0-alpha-1</plexusPluginManagerVersion>
|
<plexusPluginManagerVersion>1.0-alpha-1</plexusPluginManagerVersion>
|
||||||
<plexusUtilsVersion>1.5.6</plexusUtilsVersion>
|
<plexusUtilsVersion>1.5.6</plexusUtilsVersion>
|
||||||
<wagonVersion>1.0-beta-4</wagonVersion>
|
<wagonVersion>1.0-beta-4</wagonVersion>
|
||||||
<modelBuilderVersion>1.2</modelBuilderVersion>
|
<modelBuilderVersion>1.3</modelBuilderVersion>
|
||||||
<mercuryVersion>1.0.0-alpha-2</mercuryVersion>
|
<mercuryVersion>1.0.0-alpha-2</mercuryVersion>
|
||||||
<woodstoxVersion>3.2.6</woodstoxVersion>
|
<woodstoxVersion>3.2.6</woodstoxVersion>
|
||||||
<modelloVersion>1.0-alpha-22</modelloVersion>
|
<modelloVersion>1.0-alpha-22</modelloVersion>
|
||||||
|
|
Loading…
Reference in New Issue