diff --git a/api/maven-api-settings/src/main/mdo/settings.mdo b/api/maven-api-settings/src/main/mdo/settings.mdo index a70d8886ddc8..b73a15817812 100644 --- a/api/maven-api-settings/src/main/mdo/settings.mdo +++ b/api/maven-api-settings/src/main/mdo/settings.mdo @@ -45,14 +45,15 @@ 1.0.0+ common base class that contains code to track the source for - this instance (USER|GLOBAL) + this instance (USER|PROJECT|GLOBAL) - 1.0.0+ + 1.1.0+ org.apache.maven maven-api-model - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT mdo target/mdo/ maven.mdo diff --git a/maven-model/src/test/resources/xml/pom.xml b/maven-model/src/test/resources/xml/pom.xml index 01b679687562..11d2afb1313b 100644 --- a/maven-model/src/test/resources/xml/pom.xml +++ b/maven-model/src/test/resources/xml/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT maven-model @@ -37,12 +37,12 @@ under the License. org.apache.maven maven-api-model - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT org.apache.maven maven-xml-impl - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT @@ -64,7 +64,7 @@ under the License. org.apache.maven maven-api-model - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT mdo target/mdo/ maven.mdo @@ -77,7 +77,7 @@ under the License. org.apache.maven modello-plugin-velocity - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT velocity diff --git a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java index 6a45b3c4e4bc..46b8cdcc8fd8 100644 --- a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java +++ b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuilder.java @@ -102,11 +102,16 @@ public SettingsBuildingResult build( SettingsBuildingRequest request ) getSettingsSource( request.getGlobalSettingsFile(), request.getGlobalSettingsSource() ); Settings globalSettings = readSettings( globalSettingsSource, request, problems ); + Source projectSettingsSource = + getSettingsSource( request.getProjectSettingsFile(), request.getProjectSettingsSource() ); + Settings projectSettings = readSettings( projectSettingsSource, request, problems ); + Source userSettingsSource = getSettingsSource( request.getUserSettingsFile(), request.getUserSettingsSource() ); Settings userSettings = readSettings( userSettingsSource, request, problems ); userSettings = settingsMerger.merge( userSettings, globalSettings, TrackableBase.GLOBAL_LEVEL ); + userSettings = settingsMerger.merge( userSettings, projectSettings, TrackableBase.PROJECT_LEVEL ); problems.setSource( "" ); diff --git a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java index f39f57924d0c..54d3a30cf5b8 100644 --- a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java +++ b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/DefaultSettingsBuildingRequest.java @@ -33,10 +33,14 @@ public class DefaultSettingsBuildingRequest private File globalSettingsFile; + private File projectSettingsFile; + private File userSettingsFile; private SettingsSource globalSettingsSource; + private SettingsSource projectSettingsSource; + private SettingsSource userSettingsSource; private Properties systemProperties; @@ -71,6 +75,34 @@ public DefaultSettingsBuildingRequest setGlobalSettingsSource( SettingsSource gl return this; } + @Override + public File getProjectSettingsFile() + { + return projectSettingsFile; + } + + @Override + public DefaultSettingsBuildingRequest setProjectSettingsFile( File projectSettingsFile ) + { + this.projectSettingsFile = projectSettingsFile; + + return this; + } + + @Override + public SettingsSource getProjectSettingsSource() + { + return projectSettingsSource; + } + + @Override + public DefaultSettingsBuildingRequest setProjectSettingsSource( SettingsSource projectSettingsSource ) + { + this.projectSettingsSource = projectSettingsSource; + + return this; + } + @Override public File getUserSettingsFile() { diff --git a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/SettingsBuildingRequest.java b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/SettingsBuildingRequest.java index 92d87d80d75b..6c3539cb032e 100644 --- a/maven-settings-builder/src/main/java/org/apache/maven/settings/building/SettingsBuildingRequest.java +++ b/maven-settings-builder/src/main/java/org/apache/maven/settings/building/SettingsBuildingRequest.java @@ -62,6 +62,38 @@ public interface SettingsBuildingRequest */ SettingsBuildingRequest setGlobalSettingsSource( SettingsSource globalSettingsSource ); + /** + * Gets the project settings file. + * + * @return The project settings file or {@code null} if none. + */ + File getProjectSettingsFile(); + + /** + * Sets the project settings file. A non-existent settings file is equivalent to empty settings. If both user + * settings and project settings are given, the user settings take precedence. + * + * @param projectSettingsFile The project settings file, may be {@code null} to disable project settings. + * @return This request, never {@code null}. + */ + SettingsBuildingRequest setProjectSettingsFile( File projectSettingsFile ); + + /** + * Gets the project settings source. + * + * @return The project settings source or {@code null} if none. + */ + SettingsSource getProjectSettingsSource(); + + /** + * Sets the project settings source. If both user settings and a project settings are given, the user settings take + * precedence. + * + * @param projectSettingsSource The project settings source, may be {@code null} to disable project settings. + * @return This request, never {@code null}. + */ + SettingsBuildingRequest setProjectSettingsSource( SettingsSource projectSettingsSource ); + /** * Gets the user settings file. * diff --git a/maven-settings/pom.xml b/maven-settings/pom.xml index 0286d1fed49a..63c3eeddf63d 100644 --- a/maven-settings/pom.xml +++ b/maven-settings/pom.xml @@ -68,7 +68,7 @@ under the License. org.apache.maven maven-api-settings - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT mdo target/mdo/ settings.mdo diff --git a/maven-toolchain-model/pom.xml b/maven-toolchain-model/pom.xml index bef586cd4c90..f2900385d4d4 100644 --- a/maven-toolchain-model/pom.xml +++ b/maven-toolchain-model/pom.xml @@ -67,7 +67,7 @@ under the License. org.apache.maven maven-api-toolchain - 4.0.0-alpha-1-SNAPSHOT + 4.0.0-alpha-3-SNAPSHOT mdo target/mdo/ toolchains.mdo