You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2009/04/08 06:11:42 UTC
svn commit: r762892 - in /maven/components/trunk:
maven-project-builder/src/main/java/org/apache/maven/project/processor/
maven-project/src/test/java/org/apache/maven/project/
maven-project/src/test/resources-project-builder/profile-plugin-mng-dependen...
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>