MNG-3937 - goals inheritance.

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@736233 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Britton Isbell 2009-01-21 05:58:52 +00:00
parent e97df44d2c
commit 036d5932e1
16 changed files with 283 additions and 82 deletions

View File

@ -120,7 +120,7 @@ public List<ArtifactBasicMetadata> getDependencies( ArtifactBasicMetadata bmd, M
PomTransformer transformer = new PomTransformer( new MavenDomainModelFactory() );
ModelTransformerContext ctx =
new ModelTransformerContext( PomTransformer.MODEL_CONTAINER_FACTORIES );
new ModelTransformerContext( PomTransformer.MODEL_CONTAINER_INFOS );
try
{

View File

@ -111,9 +111,7 @@ public List<ArtifactBasicMetadata> getDependencyMetadata()
{
List<ArtifactBasicMetadata> metadatas = new ArrayList<ArtifactBasicMetadata>();
ModelDataSource source = new DefaultModelDataSource();
source.init( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelDataSource source = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
for ( ModelContainer modelContainer : source.queryFor( ProjectUri.Dependencies.Dependency.xUri ) )
{
metadatas.add( transformContainerToMetadata( modelContainer ) );
@ -125,8 +123,8 @@ public List<ArtifactBasicMetadata> getDependencyMetadata()
public Collection<ModelContainer> getActiveProfileContainers( List<InterpolatorProperty> properties )
throws DataSourceException
{
ModelDataSource dataSource = new DefaultModelDataSource();
dataSource.init( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelDataSource dataSource = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
return new ProfileContext( dataSource, properties ).getActiveProfiles();
}
@ -249,9 +247,8 @@ else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.optional ) )
metadata.setScope( "runtime" );
}
ModelDataSource dataSource = new DefaultModelDataSource();
dataSource.init( container.getProperties(), Arrays.asList( new ArtifactModelContainerFactory(),
new ExclusionModelContainerFactory() ) );
ModelDataSource dataSource = new DefaultModelDataSource( container.getProperties(), Arrays.asList( new ArtifactModelContainerFactory(),
new ExclusionModelContainerFactory() ));
List<ArtifactBasicMetadata> exclusions = new ArrayList<ArtifactBasicMetadata>();
for ( ModelContainer exclusion : dataSource.queryFor( ProjectUri.Dependencies.Dependency.Exclusions.Exclusion.xUri ) )

View File

@ -0,0 +1,62 @@
package org.apache.maven.project.builder;
import org.apache.maven.shared.model.ModelContainerFactory;
import org.apache.maven.shared.model.ModelContainer;
import org.apache.maven.shared.model.ModelProperty;
import org.apache.maven.shared.model.ModelContainerAction;
import java.util.*;
public class AlwaysJoinModelContainerFactory
implements ModelContainerFactory
{
private static final Collection<String> uris = Collections.unmodifiableList( Arrays.asList(
ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal
// ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri
) );
public Collection<String> getUris()
{
return uris;
}
public ModelContainer create( List<ModelProperty> modelProperties )
{
if ( modelProperties == null || modelProperties.size() == 0 )
{
throw new IllegalArgumentException( "modelProperties: null or empty" );
}
return new Anon_ModelContainer( modelProperties );
}
private static class Anon_ModelContainer
implements ModelContainer
{
public Anon_ModelContainer(List<ModelProperty> properties) {
this.properties = new ArrayList<ModelProperty>(properties);
}
private List<ModelProperty> properties;
public ModelContainerAction containerAction( ModelContainer modelContainer )
{
return ModelContainerAction.JOIN;
}
public ModelContainer createNewInstance( List<ModelProperty> modelProperties )
{
return new Anon_ModelContainer( modelProperties );
}
public List<ModelProperty> getProperties()
{
return new ArrayList<ModelProperty>(properties);
}
}
}

View File

@ -7,7 +7,7 @@
import java.util.*;
public class ExclusionModelContainerFactory implements ModelContainerFactory
public class ExclusionModelContainerFactory implements ModelContainerFactory
{
private static final Collection<String> uris = Collections.unmodifiableList( Arrays.asList(

View File

@ -20,28 +20,11 @@
*/
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import org.apache.maven.shared.model.DomainModel;
import org.apache.maven.shared.model.DomainModelFactory;
import org.apache.maven.shared.model.InterpolatorProperty;
import org.apache.maven.shared.model.ModelContainer;
import org.apache.maven.shared.model.ModelContainerAction;
import org.apache.maven.shared.model.ModelContainerFactory;
import org.apache.maven.shared.model.ModelDataSource;
import org.apache.maven.shared.model.ModelEventListener;
import org.apache.maven.shared.model.ModelProperty;
import org.apache.maven.shared.model.ModelTransformer;
import org.apache.maven.shared.model.ModelTransformerContext;
import org.apache.maven.shared.model.*;
import org.apache.maven.shared.model.impl.DefaultModelDataSource;
import org.apache.maven.project.builder.rules.ExecutionRule;
/**
* Provides methods for transforming model properties into a domain model for the pom classic format and vice versa.
@ -64,13 +47,40 @@ public PomTransformer(DomainModelFactory factory)
new IdModelContainerFactory(ProjectUri.Reporting.Plugins.Plugin.ReportSets.ReportSet.xUri),
new IdModelContainerFactory(ProjectUri.Profiles.Profile.xUri),
new IdModelContainerFactory(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri)));
private static Collection<ModelContainerInfo> goals_infos = Arrays.asList(
ModelContainerInfo.Factory.createModelContainerInfo(
new AlwaysJoinModelContainerFactory(), new ExecutionRule(), null)
);
private static Collection<ModelContainerInfo> plugin_executions = Arrays.asList(
ModelContainerInfo.Factory.createModelContainerInfo(
new IdModelContainerFactory(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri),
null, goals_infos)
);
public static final Collection<ModelContainerInfo> MODEL_CONTAINER_INFOS = Arrays.asList(
ModelContainerInfo.Factory.createModelContainerInfo(
new ArtifactModelContainerFactory(), null, plugin_executions),
ModelContainerInfo.Factory.createModelContainerInfo(
new IdModelContainerFactory(ProjectUri.PluginRepositories.PluginRepository.xUri), null, null),
ModelContainerInfo.Factory.createModelContainerInfo(
new IdModelContainerFactory(ProjectUri.Repositories.Repository.xUri), null, null),
ModelContainerInfo.Factory.createModelContainerInfo(
new IdModelContainerFactory(ProjectUri.Reporting.Plugins.Plugin.ReportSets.ReportSet.xUri), null, null),
ModelContainerInfo.Factory.createModelContainerInfo(
new IdModelContainerFactory(ProjectUri.Profiles.Profile.xUri), null, null)
);
/**
* The URIs this transformer supports
*/
public static final Set<String> URIS = Collections.unmodifiableSet(new HashSet<String>( Arrays.asList( ProjectUri.Build.Extensions.xUri,
ProjectUri.Build.PluginManagement.Plugins.xUri,
ProjectUri.Build.PluginManagement.Plugins.Plugin.configuration,
ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri,
ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.Execution.Goals.xURI,
ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.Exclusions.xUri,
@ -117,7 +127,8 @@ public PomTransformer(DomainModelFactory factory)
ProjectUri.Profiles.Profile.Repositories.xUri,
ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.xUri,
ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Executions.xUri,
// ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Executions.xUri,
// ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Executions.Execution.Goals.xURI,
ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.Exclusions.xUri,
@ -149,8 +160,7 @@ public final DomainModel transformToDomainModel( List<ModelProperty> properties,
List<ModelProperty> props = new ArrayList<ModelProperty>( properties );
//dependency management
ModelDataSource source = new DefaultModelDataSource();
source.init( props, PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelDataSource source = new DefaultModelDataSource( props, PomTransformer.MODEL_CONTAINER_FACTORIES );
for ( ModelContainer dependencyContainer : source.queryFor( ProjectUri.Dependencies.Dependency.xUri ) )
{
@ -166,7 +176,7 @@ public final DomainModel transformToDomainModel( List<ModelProperty> properties,
}
}
}
List<ModelProperty> foobar = new ArrayList<ModelProperty>();
for ( ModelContainer pluginContainer : source.queryFor( ProjectUri.Build.Plugins.Plugin.xUri ) )
{
for ( ModelContainer managementContainer : source.queryFor( ProjectUri.Build.PluginManagement.Plugins.Plugin.xUri ) )
@ -219,11 +229,8 @@ public final DomainModel transformToDomainModel( List<ModelProperty> properties,
if ( action.equals( ModelContainerAction.JOIN ) || action.equals( ModelContainerAction.DELETE ) )
{
ModelDataSource pluginDatasource = new DefaultModelDataSource();
pluginDatasource.init( pluginContainer.getProperties(), PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelDataSource managementDatasource = new DefaultModelDataSource();
managementDatasource.init( managementContainer.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 );
List<ModelContainer> managementExecutionContainers = managementDatasource.queryFor(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
List<ModelProperty> managementPropertiesWithoutExecutions = new ArrayList<ModelProperty>(managementContainer.getProperties());
@ -231,7 +238,7 @@ public final DomainModel transformToDomainModel( List<ModelProperty> properties,
{
managementPropertiesWithoutExecutions.removeAll(a.getProperties());
}
//THIS JOIN REVERSES ORDER
source.join( pluginContainer, new ArtifactModelContainerFactory().create(managementPropertiesWithoutExecutions) );
List<ModelContainer> pluginExecutionContainers = pluginDatasource.queryFor(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
@ -257,10 +264,14 @@ public final DomainModel transformToDomainModel( List<ModelProperty> properties,
for(ModelContainer b : pluginExecutionContainers)
{
if(b.containerAction(c).equals(ModelContainerAction.JOIN))
if(b.containerAction(c).equals(ModelContainerAction.JOIN)) //----
{
//MNG-3995 - property lost here
source.join(b, c);
joinedExecutionContainers.add(a);
foobar.addAll(b.getProperties());
foobar.addAll(c.getProperties());
//REVERSE ORDER HERE
joinedExecutionContainers.add(a);//-----
}
}
}
@ -305,18 +316,14 @@ public final DomainModel transformToDomainModel( List<ModelProperty> properties,
//Rule: Do not join plugin executions without ids
Set<ModelProperty> removeProperties = new HashSet<ModelProperty>();
ModelDataSource dataSource = new DefaultModelDataSource();
dataSource.init( props, PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelDataSource dataSource = new DefaultModelDataSource( props, PomTransformer.MODEL_CONTAINER_FACTORIES );
List<ModelContainer> containers = dataSource.queryFor( ProjectUri.Build.Plugins.Plugin.xUri );
for ( ModelContainer pluginContainer : containers )
{
ModelDataSource executionSource = new DefaultModelDataSource();
executionSource.init( pluginContainer.getProperties(),
Arrays.asList( new ArtifactModelContainerFactory(), new PluginExecutionIdModelContainerFactory() ) );
ModelDataSource executionSource = new DefaultModelDataSource( pluginContainer.getProperties(),
Arrays.asList( new ArtifactModelContainerFactory(), new PluginExecutionIdModelContainerFactory() ));
List<ModelContainer> executionContainers = executionSource.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri );
@ -343,16 +350,41 @@ public final DomainModel transformToDomainModel( List<ModelProperty> properties,
props.removeAll( removeProperties );
//Execution Rule - extension for this needs to be pushed into model-builder
dataSource = new DefaultModelDataSource( props, PomTransformer.MODEL_CONTAINER_FACTORIES );
for(ModelContainer mc : dataSource.queryFor( ProjectUri.Build.Plugins.Plugin.xUri ))
{
ModelDataSource executionSource =
new DefaultModelDataSource(mc.getProperties(),
Arrays.asList(new IdModelContainerFactory(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri),
new AlwaysJoinModelContainerFactory()));
for(ModelContainer es : executionSource.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri )) {
ModelContainerRule rule = new ExecutionRule();
//List<ModelProperty> x = rule.execute(es.getProperties());
List<ModelProperty> x = (!foobar.containsAll(es.getProperties())) ? rule.execute(es.getProperties()) :
ModelTransformerContext.sort(rule.execute(es.getProperties()),
ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri);
dataSource.replace(es, es.createNewInstance(x));
}
}
props = dataSource.getModelProperties();
for(ModelEventListener listener : eventListeners)
{
ModelDataSource ds = new DefaultModelDataSource();
ds.init( props, listener.getModelContainerFactories() );
ModelDataSource ds = new DefaultModelDataSource( props, listener.getModelContainerFactories() );
for(String uri : listener.getUris() )
{
listener.fire(ds.queryFor(uri));
}
}
// for(ModelProperty mp : props) {
// if(mp.getUri().startsWith(ProjectUri.Build.Plugins.Plugin.Executions.Execution.configuration)) {
// System.out.println(mp);
// }
// }
return factory.createDomainModel( props );
}
@ -415,8 +447,7 @@ public final List<ModelProperty> transformToModelProperties(List<? extends Domai
List clearedProperties = new ArrayList<ModelProperty>();
//Default Dependency Scope Rule
ModelDataSource s = new DefaultModelDataSource();
s.init( tmp, Arrays.asList( new ArtifactModelContainerFactory()) );
ModelDataSource s = new DefaultModelDataSource( tmp, Arrays.asList( new ArtifactModelContainerFactory()) );
for(ModelContainer mc : s.queryFor(ProjectUri.Dependencies.Dependency.xUri))
{
boolean containsScope = false;
@ -470,8 +501,7 @@ public final List<ModelProperty> transformToModelProperties(List<? extends Domai
if ( domainModelIndex > 0 )
{
List<ModelProperty> removeProperties = new ArrayList<ModelProperty>();
ModelDataSource source = new DefaultModelDataSource();
source.init( tmp, Arrays.asList( new ArtifactModelContainerFactory(), new PluginExecutionIdModelContainerFactory() ) );
ModelDataSource source = new DefaultModelDataSource( tmp, Arrays.asList( new ArtifactModelContainerFactory(), new PluginExecutionIdModelContainerFactory() ));
List<ModelContainer> containers =
source.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri );
for ( ModelContainer container : containers )
@ -500,8 +530,7 @@ public final List<ModelProperty> transformToModelProperties(List<? extends Domai
if ( domainModelIndex > 0 )
{
List<ModelProperty> removeProperties = new ArrayList<ModelProperty>();
ModelDataSource source = new DefaultModelDataSource();
source.init( tmp, PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelDataSource source = new DefaultModelDataSource( tmp, PomTransformer.MODEL_CONTAINER_FACTORIES );
List<ModelContainer> containers = source.queryFor( ProjectUri.Build.Plugins.Plugin.xUri );
for ( ModelContainer container : containers )
{
@ -618,8 +647,7 @@ public final List<ModelProperty> transformToModelProperties(List<? extends Domai
}
//Rule: Build plugin config overrides reporting plugin config
ModelDataSource source = new DefaultModelDataSource();
source.init( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelDataSource source = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
List<ModelContainer> reportContainers = source.queryFor( ProjectUri.Reporting.Plugins.Plugin.xUri );
for ( ModelContainer pluginContainer : source.queryFor( ProjectUri.Build.Plugins.Plugin.xUri ) )
@ -638,6 +666,7 @@ public final List<ModelProperty> transformToModelProperties(List<? extends Domai
}
modelProperties = source.getModelProperties();
return modelProperties;
}

View File

@ -0,0 +1,83 @@
package org.apache.maven.project.builder.rules;
import org.apache.maven.shared.model.*;
import org.apache.maven.shared.model.impl.DefaultModelDataSource;
import org.apache.maven.project.builder.ProjectUri;
import org.apache.maven.project.builder.AlwaysJoinModelContainerFactory;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Arrays;
public class ExecutionRule implements ModelContainerRule {
public List<ModelProperty> execute(List<ModelProperty> modelProperties) {
List<ModelProperty> properties = new ArrayList<ModelProperty>(modelProperties);
List<ModelProperty> goalProperties = new ArrayList<ModelProperty>();
List<ModelProperty> processedProperties = new ArrayList<ModelProperty>();
for(ModelProperty mp : properties) {
if(mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal)) {
goalProperties.add(mp);
} else if(!containsProperty(mp, processedProperties)) {
processedProperties.add(mp);
}
}
if(!goalProperties.isEmpty()) {
Collections.reverse(goalProperties);
List<ModelProperty> uniqueGoals = new ArrayList<ModelProperty>();
for(ModelProperty mp : goalProperties) {
if(!containsProperty(mp, uniqueGoals)) {
uniqueGoals.add(mp);
}
}
Collections.reverse(uniqueGoals);
processedProperties.addAll(
findIndexOf(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.xURI, processedProperties) + 1,
uniqueGoals);
}
List<ModelProperty> emptyTags = new ArrayList<ModelProperty>();
for(ModelProperty mp : processedProperties) {
if(mp.getUri().equals(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.xURI)
&& mp.getResolvedValue() != null && mp.getResolvedValue().trim().equals("")) {
emptyTags.add(mp);
}
}
processedProperties.removeAll(emptyTags);
return processedProperties;
}
private static int findIndexOf(String uri, List<ModelProperty> modelProperties) {
for(ModelProperty mp : modelProperties) {
if(mp.getUri().equals(uri)) {
return modelProperties.indexOf(mp);
}
}
return -1;
}
private static boolean containsProperty(ModelProperty modelProperty, List<ModelProperty> modelProperties) {
for (ModelProperty mp : modelProperties) {
if ((mp.getUri().equals(modelProperty.getUri()))) {
boolean b = (mp.getResolvedValue() == null && modelProperty.getResolvedValue() == null) ||
(mp.getResolvedValue() != null && !mp.getResolvedValue().trim().equals("")
&& mp.getResolvedValue().equals(modelProperty.getResolvedValue()));
/*
boolean b = (mp.getResolvedValue() == null && modelProperty.getResolvedValue() == null) ||
(mp.getResolvedValue() != null && modelProperty.getResolvedValue() != null
&& mp.getResolvedValue().equals(modelProperty.getResolvedValue()));
*/
if(b) {
return true;
}
}
}
return false;
}
}

View File

@ -44,13 +44,13 @@ public void dependencyManagementWithScopeAndClassifier() throws IOException
DomainModel childModel = new DefaultDomainModel(mp2);
DomainModel parentModel = new DefaultDomainModel(mp);
ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_INFOS );
ModelTransformer transformer = new PomTransformer(new DefaultDomainModelFactory());
DomainModel domainModel = ctx.transform( Arrays.asList(childModel, parentModel), transformer, transformer );
DefaultModelDataSource source = new DefaultModelDataSource();
source.init(domainModel.getModelProperties(), PomTransformer.MODEL_CONTAINER_FACTORIES );
DefaultModelDataSource source = new DefaultModelDataSource( domainModel.getModelProperties(), PomTransformer.MODEL_CONTAINER_FACTORIES);
List<ModelContainer> containers = source.queryFor(ProjectUri.Dependencies.Dependency.xUri);
assertTrue(containers.size() == 2 );

View File

@ -50,16 +50,16 @@ public void goalsInherited() throws IOException {
DomainModel parentModel = new DefaultDomainModel(mp);
ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_INFOS );
ModelTransformer transformer = new PomTransformer(new DefaultDomainModelFactory());
DomainModel domainModel = ctx.transform( Arrays.asList(parentModel, new DefaultDomainModel(mp0)), transformer, transformer );
DefaultModelDataSource source = new DefaultModelDataSource();
List<ModelContainerFactory> factories = new ArrayList<ModelContainerFactory>(PomTransformer.MODEL_CONTAINER_FACTORIES);
factories.add(new PluginExecutionIdModelContainerFactory());
source.init(domainModel.getModelProperties(), factories);
DefaultModelDataSource source = new DefaultModelDataSource(domainModel.getModelProperties(), factories);
List<ModelContainer> containers = source.queryFor(ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.Execution.xUri);
assertTrue(2 == containers.size());

View File

@ -30,8 +30,7 @@ public void getActiveProfiles() throws DataSourceException {
modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.name , "foo"));
modelProperties.add(new ModelProperty(ProjectUri.Profiles.Profile.Activation.Property.value , "bar"));
DefaultModelDataSource dataSource = new DefaultModelDataSource();
dataSource.init(modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
DefaultModelDataSource dataSource = new DefaultModelDataSource(modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES );
List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
interpolatorProperties.add(new InterpolatorProperty( "${foo}", "bar"));

View File

@ -0,0 +1,31 @@
package org.apache.maven.project.builder.rules;
import org.apache.maven.shared.model.ModelProperty;
import org.apache.maven.project.builder.ProjectUri;
import java.io.IOException;
import java.util.List;
import java.util.Arrays;
public class ExecutionRuleTest {
@org.junit.Test
public void execute() throws IOException
{
List<ModelProperty> modelProperties = Arrays.asList(
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri, null),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.xURI, null),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal, "parent-a"),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal, "merged"),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal, "parent-b"),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.xURI, null),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal, "child-b"),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal, "merged"),
new ModelProperty(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.goal, "child-a"));
List<ModelProperty> mps = new ExecutionRule().execute(modelProperties);
for(ModelProperty mp : mps) {
//System.out.println(mp);
}
}
}

View File

@ -27,7 +27,7 @@ under the License.
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-project</artifactId>
<name>Maven Project Builder</name>
<name>Maven Project</name>
<description>This library is used to not only read Maven project object model files, but to assemble inheritence
and to retrieve remote models as required.</description>
<dependencies>

View File

@ -296,6 +296,7 @@ public List<ModelProperty> getModelProperties() throws IOException
s.addAll(PomTransformer.URIS);
s.add(ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri);
s.add(ProjectUri.Build.Plugins.Plugin.Executions.xUri);
s.add(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.xURI);
modelProperties = ModelMarshaller.marshallXmlToModelProperties(
getInputStream(), ProjectUri.baseUri, s );
}

View File

@ -43,10 +43,9 @@ public PomClassicDomainModel buildModel( File pom,
* Returns a maven project for the specified input stream.
*
* @param pom input stream of the model
* @param inheritedModels list of models containing additional parent models in order from most to least specialized
* @param mixins list of models containing additional parent models in order from most to least specialized
* @param interpolatorProperties properties used for interpolation of properties within the model
* @param resolver artifact resolver used in resolving artifacts
* @param baseDirectory the base directory of the model
* @param projectBuilderConfiguration
* @return a maven project for the specified input stream
* @throws IOException if there is a problem in the construction of the maven project

View File

@ -157,7 +157,7 @@ public PomClassicDomainModel buildModel( File pom,
PomClassicTransformer transformer = new PomClassicTransformer( new PomClassicDomainModelFactory() );
ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_FACTORIES );
ModelTransformerContext ctx = new ModelTransformerContext(PomTransformer.MODEL_CONTAINER_INFOS );
PomClassicDomainModel transformedDomainModel = ( (PomClassicDomainModel) ctx.transform( domainModels,
transformer,

View File

@ -68,7 +68,7 @@ public void resolve( Artifact artifact )
// them into a resolver, create the expression to extract the data to validate the Model, and the URI
// to validate the properties. We also need a way to navigate from the Tex specification documents to
// the test in question and vice versa. A little Eclipse plugin would do the trick.
/*
public void testThatExecutionsWithoutIdsAreMergedAndTheChildWins()
throws Exception
{
@ -80,7 +80,7 @@ public void testThatExecutionsWithoutIdsAreMergedAndTheChildWins()
PomTestWrapper tester = new PomTestWrapper( model );
assertModelEquals( tester, "child-descriptor", "build/plugins[1]/executions[1]/goals[1]" );
}
*/
public void testErroneousJoiningOfDifferentPluginsWithEqualDependencies()
throws Exception
{
@ -208,7 +208,7 @@ public void testOrderOfMergedPluginExecutionsWithPluginManagement()
}
//*/
/* FIXME: cf. MNG-3937
/* FIXME: cf. MNG-3937 */
public void testOrderOfMergedPluginExecutionGoalsWithoutPluginManagement()
throws Exception
{
@ -288,7 +288,7 @@ public void testOrderOfMergedPluginDependenciesWithPluginManagement()
assertEquals( "e", pom.getValue( "build/plugins[1]/dependency[5]/artifactId" ) );
assertEquals( "1", pom.getValue( "build/plugins[1]/dependency[5]/version" ) );
}
//*/
*/
public void testInterpolationOfNestedBuildDirectories()
throws Exception
@ -419,7 +419,7 @@ public void testInterpolationOfBasedirInPomWithUnusualName()
assertEquals( pom.getBasedir(), new File( pom.getValue( "properties/prop1" ).toString() ) );
}
/* FIXME: cf. MNG-3979
/* FIXME: cf. MNG-3979
public void testJoiningOfContainersWhenChildHasEmptyElements()
throws Exception
{
@ -436,7 +436,7 @@ private PomArtifactResolver artifactResolver( String basedir )
private PomTestWrapper buildPom( String pomPath )
throws IOException
{
File pomFile = new File( testDirectory, pomPath );
File pomFile = new File( testDirectory , pomPath );
if ( pomFile.isDirectory() )
{
pomFile = new File( pomFile, "pom.xml" );

View File

@ -55,7 +55,7 @@ under the License.
<plexusPluginManagerVersion>1.0-alpha-1</plexusPluginManagerVersion>
<plexusUtilsVersion>1.5.6</plexusUtilsVersion>
<wagonVersion>1.0-beta-4</wagonVersion>
<modelBuilderVersion>1.0</modelBuilderVersion>
<modelBuilderVersion>1.1</modelBuilderVersion>
<mercuryVersion>1.0.0-alpha-2</mercuryVersion>
<woodstoxVersion>3.2.6</woodstoxVersion>
<modelloVersion>1.0-alpha-22</modelloVersion>