diff --git a/core/src/main/java/hudson/tasks/Maven.java b/core/src/main/java/hudson/tasks/Maven.java index b7c3a2119b0158fbbfc016fffdee4d6e65eeb70a..cf77905fa39c732258b1ca786ec35ac06455f829 100644 --- a/core/src/main/java/hudson/tasks/Maven.java +++ b/core/src/main/java/hudson/tasks/Maven.java @@ -40,6 +40,7 @@ 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; @@ -163,8 +164,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; + this.globalSettings = globalSettings; } public String getTargets() { @@ -175,14 +176,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) { @@ -420,7 +429,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 0000000000000000000000000000000000000000..67ace424e899676b31c69784a0fe2edef9d40e94 --- /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/jenkins/mvn/GlobalMavenConfig/config.groovy b/core/src/main/resources/jenkins/mvn/GlobalMavenConfig/config.groovy new file mode 100644 index 0000000000000000000000000000000000000000..79e427df0f5af06206250697f3410b30b617eb5c --- /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 d17b8be66a0143d966db8cbab8955b1856934f69..90b0097265fab26ab82d606a73b85f027a94403f 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