diff options
author | Evgeny Mandrikov <mandrikov@gmail.com> | 2011-01-21 15:21:15 +0300 |
---|---|---|
committer | Evgeny Mandrikov <mandrikov@gmail.com> | 2011-01-23 18:06:25 +0300 |
commit | 65dc85cf661879f9289b93e1410a93a1a113a1a8 (patch) | |
tree | ef7b1c0efca074c4ff86c7ca879d7698d6d2a8d7 /sonar-batch/src | |
parent | ef418b4fd683ffdc20c043d450d2e0feefc6c695 (diff) | |
download | sonarqube-65dc85cf661879f9289b93e1410a93a1a113a1a8.tar.gz sonarqube-65dc85cf661879f9289b93e1410a93a1a113a1a8.zip |
SONAR-2126: Change api to work with project file system
* Introduce InputFile (file and reference to base directory),
which can be retrieved from ProjectFileSystem
* Reduce dependencies on MavenProject - don't use project.getPom()
in DefaultProjectFileSystem and MavenUtils in ProjectUtils
Diffstat (limited to 'sonar-batch/src')
-rw-r--r-- | sonar-batch/src/main/java/org/sonar/batch/MavenProjectBuilder.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/MavenProjectBuilder.java b/sonar-batch/src/main/java/org/sonar/batch/MavenProjectBuilder.java index 3feb2258463..e05a557bbee 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/MavenProjectBuilder.java +++ b/sonar-batch/src/main/java/org/sonar/batch/MavenProjectBuilder.java @@ -23,6 +23,7 @@ import org.apache.commons.configuration.*; 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; @@ -31,6 +32,7 @@ import org.sonar.api.resources.Java; import org.sonar.api.resources.Project; import org.sonar.api.utils.SonarException; +import java.io.File; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -68,23 +70,35 @@ public class MavenProjectBuilder { return configuration.getString(CoreProperties.PROJECT_BRANCH_PROPERTY, configuration.getString("branch" /* deprecated property */)); } - public void configure(Project project) { ProjectConfiguration projectConfiguration = new ProjectConfiguration(databaseSession, project); configure(project, projectConfiguration); } - void configure(Project project, Configuration projectConfiguration) { Date analysisDate = loadAnalysisDate(projectConfiguration); + DefaultProjectFileSystem fs = new DefaultProjectFileSystem(project); + MavenProject pom = project.getPom(); + if (pom != null) { + for (File dir : fs.resolvePaths(pom.getCompileSourceRoots())) { + fs.addSourceDir(dir); + } + for (File dir : fs.resolvePaths(pom.getTestCompileSourceRoots())) { + fs.addTestDir(dir); + } + fs.setBaseDir(pom.getBasedir()); + fs.setBuildDir(pom.getBuild().getDirectory()); + projectConfiguration.setProperty("sonar.java.sourceVersion", MavenUtils.getJavaSourceVersion(pom)); + projectConfiguration.setProperty("sonar.java.targetVersion", MavenUtils.getJavaVersion(pom)); + } project.setConfiguration(projectConfiguration) .setExclusionPatterns(loadExclusionPatterns(projectConfiguration)) .setAnalysisDate(analysisDate) .setLatestAnalysis(isLatestAnalysis(project.getKey(), analysisDate)) - .setAnalysisVersion(loadAnalysisVersion(projectConfiguration, project.getPom())) + .setAnalysisVersion(loadAnalysisVersion(projectConfiguration, pom)) .setAnalysisType(loadAnalysisType(projectConfiguration)) .setLanguageKey(loadLanguageKey(projectConfiguration)) - .setFileSystem(new DefaultProjectFileSystem(project)); + .setFileSystem(fs); } static String[] loadExclusionPatterns(Configuration configuration) { @@ -104,7 +118,6 @@ public class MavenProjectBuilder { return true; } - Date loadAnalysisDate(Configuration configuration) { String formattedDate = configuration.getString(CoreProperties.PROJECT_DATE_PROPERTY); if (formattedDate == null) { @@ -118,7 +131,8 @@ public class MavenProjectBuilder { return DateUtils.setMinutes(date, 1); } catch (ParseException e) { - throw new SonarException("The property " + CoreProperties.PROJECT_DATE_PROPERTY + " does not respect the format yyyy-MM-dd (for example 2008-05-23) : " + formattedDate, e); + throw new SonarException("The property " + CoreProperties.PROJECT_DATE_PROPERTY + + " does not respect the format yyyy-MM-dd (for example 2008-05-23) : " + formattedDate, e); } } |