Fix: IT0469 - Rule: join configs of build/plugins/plugin and reporting/plugins/plugin.

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@705167 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Britton Isbell 2008-10-16 08:06:38 +00:00
parent 7c54aada90
commit bedc1d7a2b
5 changed files with 56 additions and 7 deletions

View File

@ -37,12 +37,13 @@ public final class ArtifactModelContainerFactory
private static final Collection<String> uris = Collections.unmodifiableList( Arrays.asList( private static final Collection<String> uris = Collections.unmodifiableList( Arrays.asList(
ProjectUri.DependencyManagement.Dependencies.Dependency.xUri, ProjectUri.Dependencies.Dependency.xUri, ProjectUri.DependencyManagement.Dependencies.Dependency.xUri, ProjectUri.Dependencies.Dependency.xUri,
ProjectUri.Reporting.Plugins.Plugin.xUri,
ProjectUri.Build.PluginManagement.Plugins.Plugin.xUri, ProjectUri.Build.PluginManagement.Plugins.Plugin.xUri,
ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.xUri, ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.xUri,
ProjectUri.Build.Plugins.Plugin.xUri, ProjectUri.Build.Plugins.Plugin.Dependencies.Dependency.xUri, ProjectUri.Build.Plugins.Plugin.xUri, ProjectUri.Build.Plugins.Plugin.Dependencies.Dependency.xUri,
ProjectUri.Build.Plugins.Plugin.Dependencies.Dependency.Exclusions.Exclusion.xUri ) ); ProjectUri.Build.Plugins.Plugin.Dependencies.Dependency.Exclusions.Exclusion.xUri
) );
public Collection<String> getUris() public Collection<String> getUris()
{ {
@ -128,7 +129,7 @@ else if ( type == null && mp.getUri().equals( ProjectUri.Dependencies.Dependency
sb.append( mp ).append( "\r\n" ); sb.append( mp ).append( "\r\n" );
} }
throw new IllegalArgumentException( "Properties does not contain artifact id. Group ID = " + groupId + throw new IllegalArgumentException( "Properties does not contain artifact id. Group ID = " + groupId +
", Version = " + version + ":" + sb ); ", Version = " + version + ", Base = " + uri + ":\r\n" + sb );
} }
if ( type == null ) if ( type == null )

View File

@ -50,6 +50,8 @@ public final class PomClassicTransformer
ProjectUri.Build.Plugins.xUri, ProjectUri.Build.Plugins.xUri,
ProjectUri.Build.Plugins.Plugin.configuration, ProjectUri.Build.Plugins.Plugin.configuration,
ProjectUri.Reporting.Plugins.xUri,
ProjectUri.Reporting.Plugins.Plugin.configuration,
ProjectUri.Build.Plugins.Plugin.Dependencies.xUri, ProjectUri.Build.Plugins.Plugin.Dependencies.xUri,
ProjectUri.Build.Plugins.Plugin.Executions.xUri, ProjectUri.Build.Plugins.Plugin.Executions.xUri,
ProjectUri.Build.Resources.xUri, ProjectUri.Build.Resources.xUri,
@ -223,6 +225,7 @@ public DomainModel transformToDomainModel( List<ModelProperty> properties )
} }
} }
props.removeAll( removeProperties ); props.removeAll( removeProperties );
String xml = null; String xml = null;
try try
{ {
@ -477,6 +480,27 @@ else if ( containsPluginRepositories && uri.startsWith( ProjectUri.PluginReposit
modelProperties.removeAll( clearedProperties ); modelProperties.removeAll( clearedProperties );
} }
//Rule: Build plugin config overrides reporting plugin config
ModelDataSource source = new DefaultModelDataSource();
source.init( modelProperties, Arrays.asList( new ArtifactModelContainerFactory(), new IdModelContainerFactory() ) );
List<ModelContainer> reportContainers = source.queryFor( ProjectUri.Reporting.Plugins.Plugin.xUri );
for ( ModelContainer pluginContainer : source.queryFor( ProjectUri.Build.Plugins.Plugin.xUri ) )
{
ModelContainer transformedReportContainer = new ArtifactModelContainerFactory().create(
transformPlugin( pluginContainer.getProperties() ) );
for(ModelContainer reportContainer : reportContainers) {
ModelContainerAction action = transformedReportContainer.containerAction( reportContainer );
if ( action.equals( ModelContainerAction.JOIN ) )
{
source.join( transformedReportContainer, reportContainer );
break;
}
}
}
modelProperties = source.getModelProperties();
return modelProperties; return modelProperties;
} }
@ -749,7 +773,7 @@ private static List<ModelProperty> transformDependencyManagement( List<ModelProp
return transformedProperties; return transformedProperties;
} }
public static List<ModelProperty> transformPluginManagement( List<ModelProperty> modelProperties ) private static List<ModelProperty> transformPluginManagement( List<ModelProperty> modelProperties )
{ {
List<ModelProperty> transformedProperties = new ArrayList<ModelProperty>(); List<ModelProperty> transformedProperties = new ArrayList<ModelProperty>();
for ( ModelProperty mp : modelProperties ) for ( ModelProperty mp : modelProperties )
@ -763,5 +787,27 @@ public static List<ModelProperty> transformPluginManagement( List<ModelProperty>
} }
return transformedProperties; return transformedProperties;
} }
private static List<ModelProperty> transformPlugin( List<ModelProperty> modelProperties )
{
List<ModelProperty> transformedProperties = new ArrayList<ModelProperty>();
for ( ModelProperty mp : modelProperties )
{
if ( mp.getUri().startsWith( ProjectUri.Build.Plugins.xUri ) )
{ if(mp.getUri().startsWith(ProjectUri.Build.Plugins.Plugin.configuration)
|| mp.getUri().equals( ProjectUri.Build.Plugins.Plugin.groupId)
|| mp.getUri().equals( ProjectUri.Build.Plugins.Plugin.artifactId)
|| mp.getUri().equals( ProjectUri.Build.Plugins.Plugin.version)
|| mp.getUri().equals( ProjectUri.Build.Plugins.Plugin.xUri ) )
{
transformedProperties.add( new ModelProperty(
mp.getUri().replace( ProjectUri.Build.Plugins.xUri, ProjectUri.Reporting.Plugins.xUri ),
mp.getResolvedValue() ) );
}
}
}
return transformedProperties;
}
} }

View File

@ -1506,7 +1506,7 @@ public static class Plugin
"http://apache.org/maven/project/reporting/plugins#collection/plugin/inherited"; "http://apache.org/maven/project/reporting/plugins#collection/plugin/inherited";
public static String configuration = public static String configuration =
"http://apache.org/maven/project/reporting/plugins#collection/plugin/configuration"; "http://apache.org/maven/project/reporting/plugins#collection/plugin/configuration#set";
public static class ReportSets public static class ReportSets
{ {

View File

@ -26,8 +26,7 @@
* Provides services for joining, deleting and querying model containers. * Provides services for joining, deleting and querying model containers.
*/ */
public interface ModelDataSource public interface ModelDataSource
{ {
/** /**
* Join model properties of the specified container a with the specified container b. Any elements of model container * Join model properties of the specified container a with the specified container b. Any elements of model container
* a must take precedence over model container b. All elements of model container A must exist in the data source; * a must take precedence over model container b. All elements of model container A must exist in the data source;

View File

@ -124,6 +124,9 @@ public ModelContainer join( ModelContainer a, ModelContainer b )
if(startIndex == -1) if(startIndex == -1)
{ {
startIndex = modelProperties.indexOf( a.getProperties().get( 0 ) ); startIndex = modelProperties.indexOf( a.getProperties().get( 0 ) );
if(startIndex == -1) {
return null;
}
} }
delete( a ); delete( a );
delete( b ); delete( b );