Skip to content

Commit

Permalink
add global maven config to define default settings providers
Browse files Browse the repository at this point in the history
  • Loading branch information
imod committed Apr 30, 2013
1 parent 6327e26 commit b8adcb4
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 10 deletions.
22 changes: 17 additions & 5 deletions core/src/main/java/hudson/tasks/Maven.java
Expand Up @@ -40,6 +40,7 @@
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;
Expand Down Expand Up @@ -163,8 +164,8 @@ public Maven(String targets,String name, String pom, String properties, String j
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() {
Expand All @@ -175,14 +176,22 @@ public String getTargets() {
* @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) {
Expand Down Expand Up @@ -420,7 +429,10 @@ public void setInstallations(MavenInstallation... installations) {

@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;
}
}

Expand Down
47 changes: 47 additions & 0 deletions 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);
}

}
@@ -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")
}
14 changes: 9 additions & 5 deletions maven-plugin/src/main/java/hudson/maven/MavenModuleSet.java
Expand Up @@ -94,6 +94,7 @@
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;
Expand Down Expand Up @@ -284,12 +285,12 @@ public class MavenModuleSet extends AbstractMavenProject<MavenModuleSet,MavenMod
/**
* @since 1.491
*/
private SettingsProvider settings = new DefaultSettingsProvider();
private SettingsProvider settings;

/**
* @since 1.491
*/
private GlobalSettingsProvider globalSettings = new DefaultGlobalSettingsProvider();
private GlobalSettingsProvider globalSettings;


/**
Expand Down Expand Up @@ -650,14 +651,14 @@ public int getMavenValidationLevel() {
* @since 1.481
*/
public SettingsProvider getSettings() {
return settings != null ? settings : new DefaultSettingsProvider();
return settings != null ? settings : GlobalMavenConfig.get().getSettingsProvider();
}

/**
* @since 1.481
*/
public GlobalSettingsProvider getGlobalSettings() {
return globalSettings != null ? globalSettings : new DefaultGlobalSettingsProvider();
return globalSettings != null ? globalSettings : GlobalMavenConfig.get().getGlobalSettingsProvider();
}

/**
Expand Down Expand Up @@ -1260,7 +1261,10 @@ public String getDisplayName() {
}

public MavenModuleSet newInstance(ItemGroup parent, String name) {
return new MavenModuleSet(parent,name);
MavenModuleSet mms = new MavenModuleSet(parent,name);
mms.setSettings(GlobalMavenConfig.get().getSettingsProvider());
mms.setGlobalSettings(GlobalMavenConfig.get().getGlobalSettingsProvider());
return mms;
}

public Maven.DescriptorImpl getMavenDescriptor() {
Expand Down

1 comment on commit b8adcb4

@jglick
Copy link
Member

@jglick jglick commented on b8adcb4 Nov 12, 2013

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.