Author: sisbell Date: Wed Apr 8 09:08:03 2009 New Revision: 763150 URL: http://svn.apache.org/viewvc?rev=763150&view=rev Log: [MNG-1412,4027] - dependency order from profile.
Added: maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/ maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/ maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java?rev=763150&r1=763149&r2=763150&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java Wed Apr 8 09:08:03 2009 @@ -50,7 +50,6 @@ public void testPomAndSettingsInterpolation() throws Exception { PomTestWrapper pom = buildPom( "test-pom-and-settings-interpolation" ); - System.out.println(pom.getDomainModel().asString()); assertEquals("applied", pom.getValue( "properties/settingsProfile" ) ); assertEquals("applied", pom.getValue( "properties/pomProfile" ) ); assertEquals("settings", pom.getValue( "properties/pomVsSettings" ) ); Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java?rev=763150&r1=763149&r2=763150&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/DependencyProcessor.java Wed Apr 8 09:08:03 2009 @@ -60,13 +60,16 @@ { isAdd = false; } - copy( (Dependency) child, targetDependency); + if(!isAdd) { t.remove( targetDependency ); } - + + copy( (Dependency) child, targetDependency); + t.add( targetDependency ); + } else if ( parent != null && child == null ) { @@ -86,14 +89,29 @@ else // JOIN { - Dependency targetDependency = new Dependency(); - - copy( (Dependency) child, targetDependency); - copy( (Dependency) parent, targetDependency ); + Dependency targetDependency = new Dependency(); + copy( (Dependency) parent, targetDependency ); + copy( (Dependency) child, targetDependency); + /* + if( isMatch( (Dependency) child, (Dependency) parent)) + { + copy( (Dependency) child, targetDependency); + } + else + { + copy( (Dependency) parent, targetDependency ); + copy( (Dependency) child, targetDependency); + } +*/ t.add( targetDependency ); } } + private static boolean isMatch(Dependency d1, Dependency d2) + { + return d1.getGroupId().equals(d2.getGroupId()) && d1.getArtifactId().equals(d2.getArtifactId()); + } + private Dependency contains(Dependency d1, List<Dependency> dependencies) { for(Dependency d : dependencies) Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java?rev=763150&r1=763149&r2=763150&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ModelProcessor.java Wed Apr 8 09:08:03 2009 @@ -145,7 +145,8 @@ if(deps.size() > 0) { - t.getDependencies().addAll( deps ); + t.setDependencies(deps); + // t.getDependencies().addAll( deps ); } //Dependency Management Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java?rev=763150&r1=763149&r2=763150&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PluginProcessor.java Wed Apr 8 09:08:03 2009 @@ -139,6 +139,10 @@ private static void copyDependencies(List<Dependency> parent, List<Dependency> child, Plugin target, boolean isChild) { + if(parent.isEmpty() && child.isEmpty()) + { + return; + } DependenciesProcessor proc = new DependenciesProcessor(); proc.process( parent, child, target.getDependencies(), isChild ); } Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=763150&r1=763149&r2=763150&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Apr 8 09:08:03 2009 @@ -133,6 +133,7 @@ } //Profiles + List<Profile> projectProfiles; try { @@ -149,17 +150,23 @@ try { + List<Profile> externalProfiles = new ArrayList<Profile>(); for(Profile p : projectProfiles) { - logger.debug("Merging profile into model (build): Model = " + domainModel.getId() + ", Profile = " + p.getId() ); + if(!"pom".equals(p.getSource())) + { + logger.debug("Merging profile into model (build): Model = " + domainModel.getId() + ", Profile = " + p.getId() ); + externalProfiles.add(p); + } } - domainModel = ProcessorContext.mergeProfilesIntoModel( projectProfiles, domainModel ); + domainModel = ProcessorContext.mergeProfilesIntoModel( externalProfiles, domainModel ); } catch ( IOException e ) { throw new ProjectBuildingException("", ""); - } + } + //Interpolation MavenProject project = interpolateDomainModel( domainModel, configuration, pomFile ); project.setActiveProfiles( projectProfiles ); 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=763150&r1=763149&r2=763150&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 Wed Apr 8 09:08:03 2009 @@ -876,10 +876,12 @@ } /** MNG-4027*/ - /* FIXME + /* FIXME*/ + public void testProfileInjectedDependencies() throws Exception { + //c.b,d,a PomTestWrapper pom = buildPom( "profile-injected-dependencies" ); System.out.println(pom.getDomainModel().asString()); assertEquals( 4, ( (List<?>) pom.getValue( "dependencies" ) ).size() ); @@ -888,6 +890,18 @@ assertEquals( "b", pom.getValue( "dependencies[3]/artifactId" ) ); assertEquals( "d", pom.getValue( "dependencies[4]/artifactId" ) ); } + + + public void testDependencyInheritance() + throws Exception + { + //c.b,d,a + PomTestWrapper pom = buildPom( "dependency-inheritance/sub" ); + assertEquals(1, ( (List<?>) pom.getValue( "dependencies" ) ).size() ); + assertEquals("4.4", pom.getValue("dependencies[1]/version") ); + System.out.println(pom.getDomainModel().asString()); + } + //*/ /** MNG-4034 */ public void testManagedProfileDependency() Added: maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml?rev=763150&view=auto ============================================================================== --- maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml (added) +++ maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/maven-parent.xml Wed Apr 8 09:08:03 2009 @@ -0,0 +1,31 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>11</version> + <packaging>pom</packaging> + + <name>Apache Maven</name> +</project> Added: maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml?rev=763150&view=auto ============================================================================== --- maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml (added) +++ maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/pom.xml Wed Apr 8 09:08:03 2009 @@ -0,0 +1,48 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>11</version> + <relativePath>maven-parent.xml</relativePath> + </parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven</artifactId> + <version>3.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <properties> + <junitVersion>3.8.1</junitVersion> + </properties> + <!--start--> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junitVersion}</version> + <scope>test</scope> + </dependency> + </dependencies> + <!--end--> +</project> Added: maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml?rev=763150&view=auto ============================================================================== --- maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml (added) +++ maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-inheritance/sub/pom.xml Wed Apr 8 09:08:03 2009 @@ -0,0 +1,34 @@ +<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>maven</artifactId> + <groupId>org.apache.maven</groupId> + <version>3.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project-builder</artifactId> + <version>3.0-SNAPSHOT</version> + <name>Maven Project Builder</name> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.4</version> + <scope>test</scope> + </dependency> + </dependencies> + + +</project>