diff --git a/maven-project/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java b/maven-compat/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java similarity index 100% rename from maven-project/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java rename to maven-compat/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java diff --git a/maven-project/src/main/java/org/apache/maven/project/path/PathTranslator.java b/maven-compat/src/main/java/org/apache/maven/project/path/PathTranslator.java similarity index 100% rename from maven-project/src/main/java/org/apache/maven/project/path/PathTranslator.java rename to maven-compat/src/main/java/org/apache/maven/project/path/PathTranslator.java diff --git a/maven-project/src/test/java/org/apache/maven/project/path/DefaultPathTranslatorTest.java b/maven-compat/src/test/java/org/apache/maven/project/path/DefaultPathTranslatorTest.java similarity index 100% rename from maven-project/src/test/java/org/apache/maven/project/path/DefaultPathTranslatorTest.java rename to maven-compat/src/test/java/org/apache/maven/project/path/DefaultPathTranslatorTest.java diff --git a/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java b/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java index 238664e7b5..b08dafed70 100644 --- a/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java +++ b/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java @@ -19,11 +19,28 @@ * under the License. */ -import org.apache.maven.shared.model.*; -import org.apache.maven.shared.model.impl.DefaultModelDataSource; - import java.io.IOException; -import java.util.*; +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 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.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.impl.DefaultModelDataSource; /** * Provides methods for transforming model properties into a domain model for the pom classic format and vice versa. @@ -38,13 +55,13 @@ public PomTransformer(DomainModelFactory factory) { this.factory = factory; } + /** * The URIs this transformer supports */ public static final Set URIS = Collections.unmodifiableSet(new HashSet( 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.Dependencies.xUri, ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.Exclusions.xUri, @@ -263,14 +280,20 @@ public final DomainModel transformToDomainModel( List properties, //Rule: Do not join plugin executions without ids Set removeProperties = new HashSet(); + ModelDataSource dataSource = new DefaultModelDataSource(); + dataSource.init( props, Arrays.asList( new ArtifactModelContainerFactory(), new IdModelContainerFactory() ) ); + List 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() ) ); + List executionContainers = executionSource.queryFor( ProjectUri.Build.Plugins.Plugin.Executions.Execution.xUri ); if ( executionContainers.size() < 2 ) @@ -279,19 +302,21 @@ public final DomainModel transformToDomainModel( List properties, } boolean hasAtLeastOneWithoutId = true; + for ( ModelContainer executionContainer : executionContainers ) { if ( hasAtLeastOneWithoutId ) { hasAtLeastOneWithoutId = hasExecutionId( executionContainer ); } - if ( !hasAtLeastOneWithoutId && !hasExecutionId( executionContainer ) && - executionContainers.indexOf( executionContainer ) > 0 ) + + if ( !hasAtLeastOneWithoutId && !hasExecutionId( executionContainer ) && executionContainers.indexOf( executionContainer ) > 0 ) { removeProperties.addAll( executionContainer.getProperties() ); } } } + props.removeAll( removeProperties ); for(ModelEventListener listener : eventListeners) diff --git a/pom.xml b/pom.xml index 1c186e43d2..a03de17dd0 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ under the License. http://maven.apache.org/ 2001 + 1.5.3 1.3 1.0 1.0-alpha-9 @@ -172,6 +173,15 @@ under the License. 1.5 + + org.codehaus.mojo + aspectj-maven-plugin + 1.0-beta-2 + + 1.5 + 1.5 + + maven-release-plugin @@ -431,6 +441,12 @@ under the License. mercury-external ${mercuryVersion} + + + aspectj + aspectjrt + ${aspectjVersion} + org.sonatype.plexus plexus-plugin-manager