aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/MavenProjectConverter.java29
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/MavenProjectConverterTest.java2
-rw-r--r--sonar-batch/src/test/resources/org/sonar/batch/MavenProjectConverterTest/mavenProjectFileNameNotEqualsToPomXml/module/pom.xml11
3 files changed, 31 insertions, 11 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 2cf8b56a227..9e214b56117 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/MavenProjectConverter.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/MavenProjectConverter.java
@@ -40,6 +40,10 @@ public final class MavenProjectConverter {
private static final String UNABLE_TO_DETERMINE_PROJECT_STRUCTURE_EXCEPTION_MESSAGE = "Unable to determine structure of project." +
" Probably you use Maven Advanced Reactor Options, which is not supported by Sonar and should not be used.";
+ private MavenProjectConverter() {
+ // only static methods
+ }
+
public static ProjectDefinition convert(List<MavenProject> poms, MavenProject root) {
Map<String, MavenProject> paths = Maps.newHashMap(); // projects by canonical path to pom.xml
Map<MavenProject, ProjectDefinition> defs = Maps.newHashMap();
@@ -55,16 +59,13 @@ public final class MavenProjectConverter {
for (Object m : pom.getModules()) {
String moduleId = (String) m;
File modulePath = new File(pom.getBasedir(), moduleId);
- if (modulePath.exists() && modulePath.isDirectory()) {
- modulePath = new File(modulePath, "pom.xml");
- }
- MavenProject module = paths.get(modulePath.getCanonicalPath());
+ MavenProject module = findMavenProject(modulePath, paths);
ProjectDefinition parentProject = defs.get(pom);
- ProjectDefinition subProject = defs.get(module);
if (parentProject == null) {
throw new IllegalStateException(UNABLE_TO_DETERMINE_PROJECT_STRUCTURE_EXCEPTION_MESSAGE);
}
+ ProjectDefinition subProject = defs.get(module);
if (subProject == null) {
throw new IllegalStateException(UNABLE_TO_DETERMINE_PROJECT_STRUCTURE_EXCEPTION_MESSAGE);
}
@@ -83,6 +84,20 @@ public final class MavenProjectConverter {
return rootProject;
}
+ private static MavenProject findMavenProject(final File modulePath, Map<String, MavenProject> paths) throws IOException {
+ if (modulePath.exists() && modulePath.isDirectory()) {
+ for (Map.Entry<String, MavenProject> entry : paths.entrySet()) {
+ String pomFileParentDir = new File(entry.getKey()).getParent();
+ if (pomFileParentDir.equals(modulePath.getCanonicalPath())) {
+ return entry.getValue();
+ }
+ }
+ return null;
+ } else {
+ return paths.get(modulePath.getCanonicalPath());
+ }
+ }
+
@VisibleForTesting
static ProjectDefinition convert(MavenProject pom) {
String key = new StringBuilder().append(pom.getGroupId()).append(":").append(pom.getArtifactId()).toString();
@@ -153,8 +168,4 @@ public final class MavenProjectConverter {
}
return file;
}
-
- private MavenProjectConverter() {
- // only static methods
- }
}
diff --git a/sonar-batch/src/test/java/org/sonar/batch/MavenProjectConverterTest.java b/sonar-batch/src/test/java/org/sonar/batch/MavenProjectConverterTest.java
index 27857fc8c14..325fbdd4a53 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/MavenProjectConverterTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/MavenProjectConverterTest.java
@@ -25,7 +25,6 @@ import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.hamcrest.core.Is;
-import org.junit.Ignore;
import org.junit.Test;
import org.sonar.api.CoreProperties;
import org.sonar.api.batch.bootstrap.ProjectDefinition;
@@ -140,7 +139,6 @@ public class MavenProjectConverterTest {
}
@Test
- @Ignore
public void should_find_module_with_maven_project_file_naming_different_from_pom_xml() throws Exception {
File rootDir = TestUtils.getResource("/org/sonar/batch/MavenProjectConverterTest/mavenProjectFileNameNotEqualsToPomXml/");
MavenProject parent = loadPom("/org/sonar/batch/MavenProjectConverterTest/mavenProjectFileNameNotEqualsToPomXml/pom.xml", true);
diff --git a/sonar-batch/src/test/resources/org/sonar/batch/MavenProjectConverterTest/mavenProjectFileNameNotEqualsToPomXml/module/pom.xml b/sonar-batch/src/test/resources/org/sonar/batch/MavenProjectConverterTest/mavenProjectFileNameNotEqualsToPomXml/module/pom.xml
new file mode 100644
index 00000000000..7b49562c2e0
--- /dev/null
+++ b/sonar-batch/src/test/resources/org/sonar/batch/MavenProjectConverterTest/mavenProjectFileNameNotEqualsToPomXml/module/pom.xml
@@ -0,0 +1,11 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.test</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
+ <artifactId>module</artifactId>
+ <packaging>jar</packaging>
+</project> \ No newline at end of file