Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/markers/SourceLocationHelper.java37
1 files changed, 36 insertions, 1 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/markers/SourceLocationHelper.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/markers/SourceLocationHelper.java
index 24dec05e..c2b8d4ca 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/markers/SourceLocationHelper.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/markers/SourceLocationHelper.java
@@ -144,17 +144,52 @@ public class SourceLocationHelper {
return pluginExecution.getLocation(SELF);
}
- private static org.apache.maven.model.Dependency getMavenDependency(MavenProject mavenProject, Dependency dependency) {
+ private static org.apache.maven.model.Dependency getMavenDependency(MavenProject mavenProject,
+ Dependency dependency) {
org.apache.maven.model.Dependency found = findDependency(mavenProject.getDependencies(), dependency);
if(found == null) {
DependencyManagement depMgmt = mavenProject.getModel().getDependencyManagement();
if(depMgmt != null) {
found = findDependency(depMgmt.getDependencies(), dependency);
+
+ if(found != null) {
+
+ // missing transitive managed dependency
+ String projectId = mavenProject.getModel().getLocation(SELF).getSource().getModelId();
+ String depId = found.getLocation(SELF).getSource().getModelId();
+
+ if(!projectId.equals(depId)) {
+ // let's see if it comes from a directly imported pom
+ DependencyManagement origMgmt = mavenProject.getOriginalModel().getDependencyManagement();
+ org.apache.maven.model.Dependency importDep = findDependencyImport(origMgmt, depId);
+ if(importDep != null) {
+ // use it to show marker on
+ found = importDep;
+ } else {
+ found = null;
+ }
+ }
+ }
}
}
return found;
}
+ private static org.apache.maven.model.Dependency findDependencyImport(DependencyManagement origMgmt, String depId) {
+ if(origMgmt != null) {
+ for(org.apache.maven.model.Dependency dependency : origMgmt.getDependencies()) {
+
+ if("import".equals(dependency.getScope()) && "pom".equals(dependency.getType())) {
+ String importId = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
+ if(depId.equals(importId)) {
+ return dependency;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
private static org.apache.maven.model.Dependency findDependency(List<org.apache.maven.model.Dependency> dependencies,
Dependency dependency) {
for(org.apache.maven.model.Dependency mavenDependency : dependencies) {

Back to the top