diff --git a/core/src/main/java/hudson/tasks/Maven.java b/core/src/main/java/hudson/tasks/Maven.java
index b7c3a2119b..c2fe89b465 100644
--- a/core/src/main/java/hudson/tasks/Maven.java
+++ b/core/src/main/java/hudson/tasks/Maven.java
@@ -38,8 +38,7 @@ import hudson.model.Computer;
import hudson.model.EnvironmentSpecific;
import hudson.model.Node;
import jenkins.model.Jenkins;
-import jenkins.mvn.DefaultGlobalSettingsProvider;
-import jenkins.mvn.DefaultSettingsProvider;
+import jenkins.mvn.GlobalMavenConfig;
import jenkins.mvn.GlobalSettingsProvider;
import jenkins.mvn.SettingsProvider;
import hudson.model.TaskListener;
@@ -129,13 +128,13 @@ public class Maven extends Builder {
* Provides access to the settings.xml to be used for a build.
* @since 1.491
*/
- private SettingsProvider settings = new DefaultSettingsProvider();
+ private SettingsProvider settings;
/**
* Provides access to the global settings.xml to be used for a build.
* @since 1.491
*/
- private GlobalSettingsProvider globalSettings = new DefaultGlobalSettingsProvider();
+ private GlobalSettingsProvider globalSettings;
private final static String MAVEN_1_INSTALLATION_COMMON_FILE = "bin/maven";
private final static String MAVEN_2_INSTALLATION_COMMON_FILE = "bin/mvn";
@@ -163,8 +162,8 @@ public class Maven extends Builder {
this.properties = Util.fixEmptyAndTrim(properties);
this.jvmOptions = Util.fixEmptyAndTrim(jvmOptions);
this.usePrivateRepository = usePrivateRepository;
- this.settings = settings != null ? settings : new DefaultSettingsProvider();
- this.globalSettings = globalSettings != null ? globalSettings : new DefaultGlobalSettingsProvider();
+ this.settings = settings != null ? settings : GlobalMavenConfig.get().getSettingsProvider();
+ this.globalSettings = globalSettings != null ? globalSettings : GlobalMavenConfig.get().getGlobalSettingsProvider();
}
public String getTargets() {
@@ -175,14 +174,22 @@ public class Maven extends Builder {
* @since 1.491
*/
public SettingsProvider getSettings() {
- return settings != null ? settings : new DefaultSettingsProvider();
+ return settings != null ? settings : GlobalMavenConfig.get().getSettingsProvider();
+ }
+
+ protected void setSettings(SettingsProvider settings) {
+ this.settings = settings;
}
/**
* @since 1.491
*/
public GlobalSettingsProvider getGlobalSettings() {
- return globalSettings != null ? globalSettings : new DefaultGlobalSettingsProvider();
+ return globalSettings != null ? globalSettings : GlobalMavenConfig.get().getGlobalSettingsProvider();
+ }
+
+ protected void setGlobalSettings(GlobalSettingsProvider globalSettings) {
+ this.globalSettings = globalSettings;
}
public void setUsePrivateRepository(boolean usePrivateRepository) {
@@ -398,6 +405,14 @@ public class Maven extends Builder {
public String getDisplayName() {
return Messages.Maven_DisplayName();
}
+
+ public GlobalSettingsProvider getDefaultGlobalSettingsProvider() {
+ return GlobalMavenConfig.get().getGlobalSettingsProvider();
+ }
+
+ public SettingsProvider getDefaultSettingsProvider() {
+ return GlobalMavenConfig.get().getSettingsProvider();
+ }
public MavenInstallation[] getInstallations() {
return installations;
@@ -420,7 +435,10 @@ public class Maven extends Builder {
@Override
public Builder newInstance(StaplerRequest req, JSONObject formData) throws FormException {
- return req.bindJSON(Maven.class,formData);
+ Maven m = req.bindJSON(Maven.class,formData);
+ m.setSettings(GlobalMavenConfig.get().getSettingsProvider());
+ m.setGlobalSettings(GlobalMavenConfig.get().getGlobalSettingsProvider());
+ return m;
}
}
diff --git a/core/src/main/java/jenkins/mvn/GlobalMavenConfig.java b/core/src/main/java/jenkins/mvn/GlobalMavenConfig.java
new file mode 100644
index 0000000000..67ace424e8
--- /dev/null
+++ b/core/src/main/java/jenkins/mvn/GlobalMavenConfig.java
@@ -0,0 +1,47 @@
+package jenkins.mvn;
+
+import hudson.Extension;
+import jenkins.model.GlobalConfiguration;
+import net.sf.json.JSONObject;
+
+import org.kohsuke.stapler.StaplerRequest;
+
+//as close as it gets to the global Maven Project configuration
+@Extension(ordinal = 50)
+public class GlobalMavenConfig extends GlobalConfiguration {
+ private SettingsProvider settingsProvider;
+ private GlobalSettingsProvider globalSettingsProvider;
+
+ public GlobalMavenConfig() {
+ load();
+ }
+
+ @Override
+ public boolean configure(StaplerRequest req, JSONObject json) throws FormException {
+ req.bindJSON(this, json);
+ return true;
+ }
+
+ public void setGlobalSettingsProvider(GlobalSettingsProvider globalSettingsProvider) {
+ this.globalSettingsProvider = globalSettingsProvider;
+ save();
+ }
+
+ public void setSettingsProvider(SettingsProvider settingsProvider) {
+ this.settingsProvider = settingsProvider;
+ save();
+ }
+
+ public GlobalSettingsProvider getGlobalSettingsProvider() {
+ return globalSettingsProvider != null ? globalSettingsProvider : new DefaultGlobalSettingsProvider();
+ }
+
+ public SettingsProvider getSettingsProvider() {
+ return settingsProvider != null ? settingsProvider : new DefaultSettingsProvider();
+ }
+
+ public static GlobalMavenConfig get() {
+ return GlobalConfiguration.all().get(GlobalMavenConfig.class);
+ }
+
+}
diff --git a/core/src/main/resources/hudson/tasks/Maven/config.jelly b/core/src/main/resources/hudson/tasks/Maven/config.jelly
index f08e941d54..adda063149 100644
--- a/core/src/main/resources/hudson/tasks/Maven/config.jelly
+++ b/core/src/main/resources/hudson/tasks/Maven/config.jelly
@@ -50,7 +50,8 @@ THE SOFTWARE.
-
+
+
-
+
\ No newline at end of file
diff --git a/core/src/main/resources/jenkins/mvn/GlobalMavenConfig/config.groovy b/core/src/main/resources/jenkins/mvn/GlobalMavenConfig/config.groovy
new file mode 100644
index 0000000000..79e427df0f
--- /dev/null
+++ b/core/src/main/resources/jenkins/mvn/GlobalMavenConfig/config.groovy
@@ -0,0 +1,8 @@
+package jenkins.mvn.GlobalMavenConfig;
+
+def f = namespace(lib.FormTagLib)
+
+f.section(title:_("Maven Configuration")) {
+ f.dropdownDescriptorSelector(title:_("Default settings provider"), field:"settingsProvider")
+ f.dropdownDescriptorSelector(title:_("Default global settings provider"), field:"globalSettingsProvider")
+}
diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java
index d17b8be66a..90b0097265 100644
--- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java
+++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java
@@ -94,6 +94,7 @@ import jenkins.model.ModelObjectWithChildren;
import jenkins.mvn.DefaultGlobalSettingsProvider;
import jenkins.mvn.DefaultSettingsProvider;
import jenkins.mvn.FilePathSettingsProvider;
+import jenkins.mvn.GlobalMavenConfig;
import jenkins.mvn.GlobalSettingsProvider;
import jenkins.mvn.GlobalSettingsProviderDescriptor;
import jenkins.mvn.SettingsProvider;
@@ -284,12 +285,12 @@ public class MavenModuleSet extends AbstractMavenProject