Index: src/main/java/hudson/plugins/sonar/model/LightProjectConfig.java
===================================================================
--- src/main/java/hudson/plugins/sonar/model/LightProjectConfig.java (revision 33278)
+++ src/main/java/hudson/plugins/sonar/model/LightProjectConfig.java (working copy)
@@ -76,13 +76,17 @@
/**
* Optional.
*/
+ private final String hudsonUrl;
+
+ /**
+ * Optional.
+ */
private final ReportsConfig reports;
public LightProjectConfig(String groupId, String artifactId, String projectName) {
this(groupId, artifactId, projectName, null, null, null, null, null, null, null, null);
}
- @DataBoundConstructor
public LightProjectConfig(
String groupId,
String artifactId,
@@ -96,6 +100,24 @@
String language,
ReportsConfig reports
) {
+ this(groupId, artifactId, projectName, projectVersion, projectDescription, javaVersion, projectSrcDir, projectSrcEncoding, projectBinDir, language, reports, null);
+ }
+
+ @DataBoundConstructor
+ public LightProjectConfig(
+ String groupId,
+ String artifactId,
+ String projectName,
+ String projectVersion,
+ String projectDescription,
+ String javaVersion,
+ String projectSrcDir,
+ String projectSrcEncoding,
+ String projectBinDir,
+ String language,
+ ReportsConfig reports,
+ String hudsonUrl
+ ) {
this.groupId = groupId;
this.artifactId = artifactId;
this.projectName = projectName;
@@ -107,6 +129,7 @@
this.projectBinDir = projectBinDir;
this.language = language;
this.reports = reports;
+ this.hudsonUrl = hudsonUrl;
}
public String getGroupId() {
@@ -149,6 +172,10 @@
return StringUtils.trimToEmpty(language);
}
+ public String getHudsonUrl() {
+ return hudsonUrl;
+ }
+
public ReportsConfig getReports() {
return reports;
}
Index: src/main/java/hudson/plugins/sonar/SonarPublisher.java
===================================================================
--- src/main/java/hudson/plugins/sonar/SonarPublisher.java (revision 33278)
+++ src/main/java/hudson/plugins/sonar/SonarPublisher.java (working copy)
@@ -345,11 +345,12 @@
private boolean executeSonar(AbstractBuild, ?> build, Launcher launcher, BuildListener listener, SonarInstallation sonarInstallation) {
try {
+ EnvVars env = build.getEnvironment(listener);
String pomName = getPomName(build);
FilePath root = build.getModuleRoot();
if (isUseSonarLight()) {
LOG.info("Generating " + pomName);
- SonarPomGenerator.generatePomForNonMavenProject(getLightProject(), root, pomName);
+ SonarPomGenerator.generatePomForNonMavenProject(getLightProject(), root, pomName, env);
}
String mavenInstallationName = getMavenInstallationName();
if (isMavenBuilder(build.getProject())) {
Index: src/main/java/hudson/plugins/sonar/template/SonarPomGenerator.java
===================================================================
--- src/main/java/hudson/plugins/sonar/template/SonarPomGenerator.java (revision 33278)
+++ src/main/java/hudson/plugins/sonar/template/SonarPomGenerator.java (working copy)
@@ -15,6 +15,7 @@
*/
package hudson.plugins.sonar.template;
+import hudson.EnvVars;
import hudson.FilePath;
import hudson.plugins.sonar.model.LightProjectConfig;
import hudson.plugins.sonar.model.ReportsConfig;
@@ -29,11 +30,12 @@
* @since 1.2
*/
public final class SonarPomGenerator {
- public static void generatePomForNonMavenProject(LightProjectConfig project, FilePath root, String pomName) throws IOException, InterruptedException {
+ public static void generatePomForNonMavenProject(LightProjectConfig project, FilePath root, String pomName, EnvVars env) throws IOException, InterruptedException {
SimpleTemplate pomTemplate = new SimpleTemplate("hudson/plugins/sonar/sonar-light-pom.template");
- pomTemplate.setAttribute("groupId", project.getGroupId());
- pomTemplate.setAttribute("artifactId", project.getArtifactId());
- pomTemplate.setAttribute("projectName", project.getProjectName()); // FIXME Godin: env.expand because projectName can be "${JOB_NAME}"
+ pomTemplate.setAttribute("groupId", env.expand(project.getGroupId()));
+ pomTemplate.setAttribute("artifactId", env.expand(project.getArtifactId()));
+ pomTemplate.setAttribute("projectName", env.expand(project.getProjectName()));
+ pomTemplate.setAttribute("hudsonUrl", env.expand(StringUtils.defaultIfEmpty(project.getHudsonUrl(), "${JOB_URL}")));
pomTemplate.setAttribute("projectVersion", StringUtils.isEmpty(project.getProjectVersion()) ? "1.0" : project.getProjectVersion());
pomTemplate.setAttribute("javaVersion", StringUtils.isEmpty(project.getJavaVersion()) ? "1.5" : project.getJavaVersion());
Index: src/main/resources/hudson/plugins/sonar/SonarPublisher/config.jelly
===================================================================
--- src/main/resources/hudson/plugins/sonar/SonarPublisher/config.jelly (revision 33278)
+++ src/main/resources/hudson/plugins/sonar/SonarPublisher/config.jelly (working copy)
@@ -126,6 +126,10 @@
+
+
+
+
Index: src/main/resources/hudson/plugins/sonar/SonarPublisher/config.properties
===================================================================
--- src/main/resources/hudson/plugins/sonar/SonarPublisher/config.properties (revision 33278)
+++ src/main/resources/hudson/plugins/sonar/SonarPublisher/config.properties (working copy)
@@ -28,6 +28,8 @@
JavaVersionDescr=Default is 1.5.
Language=Language
LanguageDescr=Default is java.
+HudsonUrl=Hudson url
+HudsonUrlDesc=The full url to this job in Hudson (example: ${JOB_URL})
ReuseReports=Check to reuse reports generated by your build
SurefireReportsPath=Surefire reports path
CoberturaReportPath=Cobertura report path
Index: src/main/resources/hudson/plugins/sonar/sonar-light-pom.template
===================================================================
--- src/main/resources/hudson/plugins/sonar/sonar-light-pom.template (revision 33278)
+++ src/main/resources/hudson/plugins/sonar/sonar-light-pom.template (working copy)
@@ -6,6 +6,10 @@
$projectName$
$projectVersion$
$description$
+
+ Hudson
+ $hudsonUrl$
+
$outputDirectory$