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