mirror of https://github.com/apache/maven.git
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:
parent
e97df44d2c
commit
036d5932e1
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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 ) )
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -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(
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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 );
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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"));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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" );
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue