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>