diff --git a/maven-core/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java b/maven-core/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java index db502d179b..3ebe5f7d9e 100644 --- a/maven-core/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java +++ b/maven-core/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java @@ -82,6 +82,11 @@ private void mergeWithDefaults( Dependency dep, Dependency def ) dep.setVersion( def.getVersion() ); } + if ( dep.getFile() == null && def.getFile() != null ) + { + dep.setFile( def.getFile() ); + } + Properties props = new Properties( def.getProperties() ); props.putAll( dep.getProperties() ); dep.setProperties( props ); diff --git a/maven-core/src/test/java/org/apache/maven/project/DefaultProjectDefaultsInjectorTest.java b/maven-core/src/test/java/org/apache/maven/project/DefaultProjectDefaultsInjectorTest.java index ea3e8ac37e..9612b3f71a 100644 --- a/maven-core/src/test/java/org/apache/maven/project/DefaultProjectDefaultsInjectorTest.java +++ b/maven-core/src/test/java/org/apache/maven/project/DefaultProjectDefaultsInjectorTest.java @@ -27,8 +27,6 @@ /** * @author jdcasey - *

- * Created on Feb 1, 2005 */ public class DefaultProjectDefaultsInjectorTest extends TestCase @@ -53,6 +51,7 @@ public void testShouldSucceedInMergingDependencyWithDependency() def.setGroupId( dep.getGroupId() ); def.setArtifactId( dep.getArtifactId() ); def.setVersion( "1.0.1" ); + def.setFile( "file" ); DependencyManagement depMgmt = new DependencyManagement(); @@ -205,6 +204,70 @@ public void testShouldNotMergeDefaultPropertiesWhenDependencySuppliesProperties( assertEquals( "value", result.getProperties().getProperty( "test" ) ); } + public void testShouldMergeDefaultFileWhenDependencyDoesntSupplyFile() + { + Model model = new Model(); + + Dependency dep = new Dependency(); + dep.setGroupId( "myGroup" ); + dep.setArtifactId( "myArtifact" ); + dep.setVersion( "1.0.1" ); + dep.setFile( "file" ); + + model.addDependency( dep ); + + Dependency def = new Dependency(); + def.setGroupId( dep.getGroupId() ); + def.setArtifactId( dep.getArtifactId() ); + + DependencyManagement depMgmt = new DependencyManagement(); + + depMgmt.addDependency( def ); + + model.setDependencyManagement( depMgmt ); + + new DefaultModelDefaultsInjector().injectDefaults( model ); + + List deps = model.getDependencies(); + assertEquals( 1, deps.size() ); + + Dependency result = (Dependency) deps.get( 0 ); + + assertEquals( "file", result.getFile() ); + } + + public void testShouldNotMergeDefaultFileWhenDependencySuppliesFile() + { + Model model = new Model(); + + Dependency dep = new Dependency(); + dep.setGroupId( "myGroup" ); + dep.setArtifactId( "myArtifact" ); + dep.setVersion( "1.0.1" ); + dep.setFile( "file" ); + + model.addDependency( dep ); + + Dependency def = new Dependency(); + def.setGroupId( dep.getGroupId() ); + def.setArtifactId( dep.getArtifactId() ); + def.setFile( "default" ); + + DependencyManagement depMgmt = new DependencyManagement(); + + depMgmt.addDependency( def ); + + model.setDependencyManagement( depMgmt ); + + new DefaultModelDefaultsInjector().injectDefaults( model ); + + List deps = model.getDependencies(); + assertEquals( 1, deps.size() ); + + Dependency result = (Dependency) deps.get( 0 ); + assertEquals( "file", result.getFile() ); + } + public void testShouldRejectDependencyWhereNoVersionIsFoundAfterDefaultsInjection() { Model model = new Model(); diff --git a/maven-model/maven.mdo b/maven-model/maven.mdo index 6515665766..a98d298544 100644 --- a/maven-model/maven.mdo +++ b/maven-model/maven.mdo @@ -807,6 +807,12 @@ * + + file + 4.0.0 + Override the use of a repository - retrieve it from this file + String +