]> source.dussan.org Git - sonarqube.git/commitdiff
Add MavenInitializer
authorEvgeny Mandrikov <mandrikov@gmail.com>
Mon, 7 Feb 2011 11:58:10 +0000 (14:58 +0300)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Mon, 7 Feb 2011 12:34:28 +0000 (15:34 +0300)
* Configures Java versions and encoding of sources based on Maven POM

plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/MavenInitializer.java [new file with mode: 0644]
sonar-batch/src/main/java/org/sonar/batch/MavenProjectBuilder.java

index c56ab2192ef3b19235b56e15e99ade2fb6681e7c..18113235d1d7cff2cae0c7cebe73ae3d4dca7efd 100644 (file)
@@ -26,6 +26,7 @@ import org.sonar.api.Properties;
 import org.sonar.api.Property;
 import org.sonar.api.checks.NoSonarFilter;
 import org.sonar.api.resources.Java;
+import org.sonar.plugins.core.batch.MavenInitializer;
 import org.sonar.plugins.core.batch.ExcludedResourceFilter;
 import org.sonar.plugins.core.charts.DistributionAreaChart;
 import org.sonar.plugins.core.charts.DistributionBarChart;
@@ -171,6 +172,9 @@ public class CorePlugin implements Plugin {
   public List getExtensions() {
     List extensions = Lists.newLinkedList();
 
+    // maven
+    extensions.add(MavenInitializer.class);
+
     // languages
     extensions.add(Java.class);
 
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/MavenInitializer.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/batch/MavenInitializer.java
new file mode 100644 (file)
index 0000000..a76799d
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2011 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.plugins.core.batch;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.project.MavenProject;
+import org.sonar.api.CoreProperties;
+import org.sonar.api.batch.Initializer;
+import org.sonar.api.batch.SupportedEnvironment;
+import org.sonar.api.batch.maven.MavenUtils;
+import org.sonar.api.resources.Project;
+import org.sonar.api.utils.Logs;
+import org.sonar.java.api.JavaUtils;
+
+@SupportedEnvironment("maven")
+public class MavenInitializer extends Initializer {
+
+  @Override
+  public void execute(Project project) {
+    MavenProject pom = project.getPom();
+    Configuration conf = project.getConfiguration();
+    /*
+     * See http://jira.codehaus.org/browse/SONAR-2148
+     * Get Java source and target versions from maven-compiler-plugin.
+     */
+    if (StringUtils.isBlank(conf.getString(JavaUtils.JAVA_SOURCE_PROPERTY))) {
+      String version = MavenUtils.getJavaSourceVersion(pom);
+      conf.setProperty(JavaUtils.JAVA_SOURCE_PROPERTY, version);
+      Logs.INFO.info("Java source version: {}", version);
+    }
+    if (StringUtils.isBlank(conf.getString(JavaUtils.JAVA_TARGET_PROPERTY))) {
+      String version = MavenUtils.getJavaVersion(pom);
+      conf.setProperty(JavaUtils.JAVA_TARGET_PROPERTY, version);
+      Logs.INFO.info("Java target version: {}", version);
+    }
+    /*
+     * See http://jira.codehaus.org/browse/SONAR-2151
+     * Get source encoding from POM
+     */
+    if (StringUtils.isBlank(conf.getString(CoreProperties.ENCODING_PROPERTY))) {
+      String encoding = MavenUtils.getSourceEncoding(pom);
+      conf.setProperty(CoreProperties.ENCODING_PROPERTY, encoding);
+      Logs.INFO.info("Source encoding: {}", encoding);
+    }
+  }
+
+}
index 208cf78cb3a349a5160d2a9e2b9b4b2523584c7c..0086f1015c0ad08a752591b513ede618a81117e0 100644 (file)
  */
 package org.sonar.batch;
 
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 import org.apache.commons.configuration.*;
-import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
 import org.apache.maven.project.MavenProject;
 import org.sonar.api.CoreProperties;
-import org.sonar.api.batch.maven.MavenUtils;
 import org.sonar.api.database.DatabaseSession;
 import org.sonar.api.database.model.ResourceModel;
 import org.sonar.api.database.model.Snapshot;
 import org.sonar.api.resources.Java;
 import org.sonar.api.resources.Project;
 import org.sonar.api.utils.SonarException;
-import org.sonar.java.api.JavaUtils;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 
 public class MavenProjectBuilder {
 
@@ -78,26 +75,6 @@ public class MavenProjectBuilder {
   void configure(Project project, Configuration projectConfiguration) {
     Date analysisDate = loadAnalysisDate(projectConfiguration);
     MavenProject pom = project.getPom();
-    if (pom != null) {
-      /*
-       * TODO actually this is a dirty hack
-       * See http://jira.codehaus.org/browse/SONAR-2148
-       * Get Java source and target versions from maven-compiler-plugin.
-       */
-      if (StringUtils.isBlank(projectConfiguration.getString(JavaUtils.JAVA_SOURCE_PROPERTY))) {
-        projectConfiguration.setProperty(JavaUtils.JAVA_SOURCE_PROPERTY, MavenUtils.getJavaSourceVersion(pom));
-      }
-      if (StringUtils.isBlank(projectConfiguration.getString(JavaUtils.JAVA_TARGET_PROPERTY))) {
-        projectConfiguration.setProperty(JavaUtils.JAVA_TARGET_PROPERTY, MavenUtils.getJavaVersion(pom));
-      }
-      /*
-       * See http://jira.codehaus.org/browse/SONAR-2151
-       * Get source encoding from POM
-       */
-      if (StringUtils.isBlank(projectConfiguration.getString(CoreProperties.ENCODING_PROPERTY))) {
-        projectConfiguration.setProperty(CoreProperties.ENCODING_PROPERTY, MavenUtils.getSourceEncoding(pom));
-      }
-    }
     project.setConfiguration(projectConfiguration)
         .setExclusionPatterns(loadExclusionPatterns(projectConfiguration))
         .setAnalysisDate(analysisDate)