Author: sisbell Date: Tue Apr 7 18:27:37 2009 New Revision: 762892 URL: http://svn.apache.org/viewvc?rev=762892&view=rev Log: [MNG-2174] plugin management dependencies.
Added: maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/ maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/pom.xml maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/sub/ maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/sub/pom.xml Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProcessorContext.java maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProfilesProcessor.java maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProcessorContext.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProcessorContext.java?rev=762892&r1=762891&r2=762892&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProcessorContext.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProcessorContext.java Tue Apr 7 18:27:37 2009 @@ -95,7 +95,6 @@ } } profileModels.addAll(externalProfileModels);//external takes precedence - // Collections.reverse( profileModels ); Model model = domainModel.getModel(); profileModels.add( 0, model ); @@ -118,11 +117,23 @@ } DependencyManagement depMng = model.getDependencyManagement(); - model.setDependencyManagement( depMng ); Model target = processModelsForInheritance(profileModels, processors); - //TODO: Merge - target.getBuild().setPluginManagement( mng ); + + PluginsManagementProcessor pmp = new PluginsManagementProcessor(); + if( mng != null ) + { + if(target.getBuild().getPluginManagement() != null) + { + pmp.process(null, mng.getPlugins(), target.getBuild().getPluginManagement().getPlugins(), false); + } + else + { + target.getBuild().setPluginManagement( mng ); + } + } + + //TODO: Merge Dependency Management target.setDependencyManagement( depMng ); PomClassicDomainModel targetModel = convertToDomainModel( target, domainModel.isMostSpecialized()); @@ -578,13 +589,25 @@ b.setDirectory( base.getDirectory() ); b.setFilters( new ArrayList<String>(base.getFilters()) ); b.setFinalName( base.getFinalName() ); - b.setPluginManagement( base.getPluginManagement() ); + b.setPluginManagement( copyPluginManagement(base.getPluginManagement()) ); b.setPlugins( copyPlugins(base.getPlugins()) ); b.setResources( new ArrayList<Resource>(base.getResources()) ); b.setTestResources( new ArrayList<Resource>(base.getTestResources()) ); return b; } + private static PluginManagement copyPluginManagement(PluginManagement mng) + { + if(mng == null) + { + return null; + } + + PluginManagement pm = new PluginManagement(); + pm.setPlugins(copyPlugins(mng.getPlugins())); + return pm; + } + private static List<Plugin> copyPlugins(List<Plugin> plugins) { List<Plugin> ps = new ArrayList<Plugin>(); Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProfilesProcessor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProfilesProcessor.java?rev=762892&r1=762891&r2=762892&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProfilesProcessor.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ProfilesProcessor.java Tue Apr 7 18:27:37 2009 @@ -20,29 +20,14 @@ */ import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import org.apache.maven.model.BuildBase; -import org.apache.maven.model.Dependency; import org.apache.maven.model.Model; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.PluginExecution; import org.apache.maven.model.Profile; -import org.apache.maven.model.Resource; public class ProfilesProcessor extends BaseProcessor -{ - private static List<Processor> processors = - Arrays.<Processor> asList( new BuildProcessor( new ArrayList<Processor>() ), new ModuleProcessor(), - new PropertiesProcessor(), new ParentProcessor(), new OrganizationProcessor(), - new MailingListProcessor(), new IssueManagementProcessor(), - new CiManagementProcessor(), new ReportingProcessor(), - new RepositoriesProcessor(), new DistributionManagementProcessor(), - new LicensesProcessor(), new ScmProcessor(), new PrerequisitesProcessor(), - new ContributorsProcessor(), new DevelopersProcessor()); - +{ public void process( Object parent, Object child, Object target, boolean isChildMostSpecialized ) { super.process( parent, child, target, isChildMostSpecialized ); @@ -53,24 +38,7 @@ { copies.add( ProcessorContext.copyOfProfile(p) ); } - t.setProfiles( copies ); - + t.setProfiles( copies ); //TODO - copy - } - - - - private static Model attachProfileNodesToModel(Profile profile) - { - Model model = new Model(); - model.setModules( new ArrayList<String>(profile.getModules()) ); - model.setDependencies(new ArrayList<Dependency>(profile.getDependencies())); - model.setDependencyManagement( profile.getDependencyManagement()); - model.setDistributionManagement( profile.getDistributionManagement() ); - model.setProperties( profile.getProperties() ); - model.setModules( new ArrayList<String>(profile.getModules() ) ); - BuildProcessor proc = new BuildProcessor( new ArrayList<Processor>()); - proc.processWithProfile( profile.getBuild(), model); - return model; } } Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=762892&r1=762891&r2=762892&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java (original) +++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Tue Apr 7 18:27:37 2009 @@ -1248,7 +1248,6 @@ { PomTestWrapper pom = buildPom( "profile-injection-order", "pom-a", "pom-b", "pom-e", "pom-c", "pom-d" ); - //System.out.println(pom.getDomainModel().asString()); assertEquals( "e", pom.getValue( "properties[1]/pomProperty" ) ); } @@ -1314,6 +1313,14 @@ assertEquals("c", pom.getValue( "build/extensions[3]/artifactId" ) ); } + /* MNG-2174 */ + public void testProfilePluginMngDependencies() + throws Exception + { + PomTestWrapper pom = buildPom( "profile-plugin-mng-dependencies/sub" , "maven-core-it"); + assertEquals("a", pom.getValue( "build/plugins[1]/dependencies[1]/artifactId" ) ); + } + /** MNG-4116 */ public void testPercentEncodedUrlsMustNotBeDecoded() throws Exception Added: maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/pom.xml?rev=762892&view=auto ============================================================================== --- maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/pom.xml (added) +++ maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/pom.xml Tue Apr 7 18:27:37 2009 @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<project> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.mng2174</groupId> + <artifactId>parent</artifactId> + <version>1.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <name>Maven Integration Test :: MNG-2174</name> + <description> + Verify that plugin dependencies defined by plugin management of a parent profile are not lost when the + parent's main plugin management section is also present. + </description> + + <modules> + <module>sub</module> + </modules> + + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-class-loader</artifactId> + <version>2.1-SNAPSHOT</version> + </plugin> + </plugins> + </pluginManagement> + </build> + + <profiles> + <profile> + <id>maven-core-it</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-class-loader</artifactId> + <dependencies> + <dependency> + <groupId>org.apache.maven.its.mng2174</groupId> + <artifactId>a</artifactId> + <version>0.1</version> + </dependency> + </dependencies> + </plugin> + </plugins> + </pluginManagement> + </build> + </profile> + </profiles> +</project> Added: maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/sub/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/sub/pom.xml?rev=762892&view=auto ============================================================================== --- maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/sub/pom.xml (added) +++ maven/components/trunk/maven-project/src/test/resources-project-builder/profile-plugin-mng-dependencies/sub/pom.xml Tue Apr 7 18:27:37 2009 @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<project> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.maven.its.mng2174</groupId> + <artifactId>parent</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + + <groupId>org.apache.maven.its.mng2174</groupId> + <artifactId>child</artifactId> + <version>1.0-SNAPSHOT</version> + + <name>Maven Integration Test :: MNG-2174</name> + <description> + Verify that plugin dependencies defined by plugin management of a parent profile are not lost when the + parent's main plugin management section is also present. + </description> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-class-loader</artifactId> + <executions> + <execution> + <id>test</id> + <phase>validate</phase> + <configuration> + <resourcePaths>mng-2174.properties</resourcePaths> + <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput> + </configuration> + <goals> + <goal>load</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project>