diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2013-02-13 15:33:43 +0100 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2013-02-13 15:36:04 +0100 |
commit | b6e7cc0ac63191ebcd85a3ef77fb18c224280195 (patch) | |
tree | 14b7f1703aa64bfa061a8fa3e91ed7bdecdcd85f /sonar-batch | |
parent | 34205904ad43efbe4b7270174d4d743fb8442944 (diff) | |
download | sonarqube-b6e7cc0ac63191ebcd85a3ef77fb18c224280195.tar.gz sonarqube-b6e7cc0ac63191ebcd85a3ef77fb18c224280195.zip |
Fix loading of source encoding from Maven POM
Diffstat (limited to 'sonar-batch')
5 files changed, 25 insertions, 8 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/MavenProjectConverter.java b/sonar-batch/src/main/java/org/sonar/batch/MavenProjectConverter.java index 7aecc6d72d3..eb9da9cd895 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/MavenProjectConverter.java +++ b/sonar-batch/src/main/java/org/sonar/batch/MavenProjectConverter.java @@ -29,8 +29,10 @@ import org.apache.maven.model.Scm; import org.apache.maven.project.MavenProject; import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; +import org.sonar.api.batch.maven.MavenUtils; import org.sonar.api.utils.SonarException; import org.sonar.batch.scan.filesystem.DefaultModuleFileSystem; +import org.sonar.java.api.JavaUtils; import java.io.File; import java.io.IOException; @@ -114,10 +116,24 @@ public final class MavenProjectConverter { .setDescription(pom.getDescription()) .addContainerExtension(pom); - convertMavenLinksToProperties(definition, pom); + // See http://jira.codehaus.org/browse/SONAR-2148 + // Get Java source and target versions from maven-compiler-plugin. + String version = MavenUtils.getJavaSourceVersion(pom); + if (version != null) { + definition.setProperty(JavaUtils.JAVA_SOURCE_PROPERTY, version); + } + version = MavenUtils.getJavaVersion(pom); + if (version != null) { + definition.setProperty(JavaUtils.JAVA_TARGET_PROPERTY, version); + } + //See http://jira.codehaus.org/browse/SONAR-2151 + String encoding = MavenUtils.getSourceEncoding(pom); + if (encoding != null) { + definition.setProperty(CoreProperties.ENCODING_PROPERTY, encoding); + } + convertMavenLinksToProperties(definition, pom); synchronizeFileSystem(pom, definition); - return definition; } @@ -171,7 +187,6 @@ public final class MavenProjectConverter { public static void synchronizeFileSystem(MavenProject pom, DefaultModuleFileSystem into) { into.resetDirs( pom.getBasedir(), - new File(resolvePath(pom.getBuild().getDirectory(), pom.getBasedir()), "sonar"), resolvePath(pom.getBuild().getDirectory(), pom.getBasedir()), resolvePaths((List<String>) pom.getCompileSourceRoots(), pom.getBasedir()), resolvePaths((List<String>) pom.getTestCompileSourceRoots(), pom.getBasedir()), diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java index 9b864e150de..0e9e7734a22 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystem.java @@ -125,10 +125,9 @@ public class DefaultModuleFileSystem implements ModuleFileSystem { /** * Breaks immutability but it's required to allow Maven Plugins to be executed and to change project structure. */ - public void resetDirs(File basedir, File workDir, File buildDir, List<File> sourceDirs, List<File> testDirs, List<File> binaryDirs) { + public void resetDirs(File basedir, File buildDir, List<File> sourceDirs, List<File> testDirs, List<File> binaryDirs) { Preconditions.checkNotNull(basedir, "Basedir can't be null"); this.baseDir = basedir; - this.workingDir = workDir; this.buildDir = buildDir; this.sourceDirs = existingDirs(sourceDirs); this.testDirs = existingDirs(testDirs); diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DeprecatedFileSystemAdapter.java b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DeprecatedFileSystemAdapter.java index 92a98988f5b..c9ec4802a85 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DeprecatedFileSystemAdapter.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/DeprecatedFileSystemAdapter.java @@ -65,6 +65,10 @@ public class DeprecatedFileSystemAdapter implements ProjectFileSystem { this(target, project, null); } + public void start() { + // used to avoid NPE in Project#getFileSystem() + } + public Charset getSourceCharset() { return target.sourceCharset(); } diff --git a/sonar-batch/src/test/java/org/sonar/batch/AbstractMavenPluginExecutorTest.java b/sonar-batch/src/test/java/org/sonar/batch/AbstractMavenPluginExecutorTest.java index 982a31d7167..053f8b88e46 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/AbstractMavenPluginExecutorTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/AbstractMavenPluginExecutorTest.java @@ -62,7 +62,7 @@ public class AbstractMavenPluginExecutorTest { DefaultModuleFileSystem fs = mock(DefaultModuleFileSystem.class); executor.execute(foo, fs, new AddSourceMavenPluginHandler()); - verify(fs).resetDirs(any(File.class), any(File.class), any(File.class), anyList(), anyList(), anyList()); + verify(fs).resetDirs(any(File.class), any(File.class), anyList(), anyList(), anyList()); } static class AddSourceMavenPluginHandler implements MavenPluginHandler { diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystemTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystemTest.java index 8646364216a..a16e895464a 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystemTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/DefaultModuleFileSystemTest.java @@ -202,11 +202,10 @@ public class DefaultModuleFileSystemTest { File existingDir = temp.newFolder("new_folder"); File notExistingDir = new File(existingDir, "not_exist"); - fileSystem.resetDirs(existingDir, existingDir, existingDir, + fileSystem.resetDirs(existingDir, existingDir, Arrays.asList(existingDir, notExistingDir), Arrays.asList(existingDir, notExistingDir), Arrays.asList(existingDir, notExistingDir)); assertThat(fileSystem.baseDir().getCanonicalPath()).isEqualTo(existingDir.getCanonicalPath()); - assertThat(fileSystem.workingDir().getCanonicalPath()).isEqualTo(existingDir.getCanonicalPath()); assertThat(fileSystem.buildDir().getCanonicalPath()).isEqualTo(existingDir.getCanonicalPath()); assertThat(fileSystem.sourceDirs()).hasSize(1); assertThat(fileSystem.sourceDirs().get(0).getCanonicalPath()).isEqualTo(existingDir.getCanonicalPath()); |