Skip to content

Commit 81a3b3b

Browse files
authored
Fix issue #402 missing runtime scope classpath entry (#219)
* fix issue #402 missing runtime scope classpath entry, eg: maven.pomderived=true test=true maven.groupId=org.yaml maven.artifactId=snakeyaml maven.version=1.19 maven.scope=runtime
1 parent d1a60b0 commit 81a3b3b

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveClasspathsHandler.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.eclipse.core.runtime.CoreException;
2121
import org.eclipse.core.runtime.IStatus;
2222
import org.eclipse.core.runtime.Status;
23+
import org.eclipse.jdt.core.IClasspathAttribute;
24+
import org.eclipse.jdt.core.IClasspathEntry;
2325
import org.eclipse.jdt.core.IJavaElement;
2426
import org.eclipse.jdt.core.IJavaProject;
2527
import org.eclipse.jdt.core.search.IJavaSearchConstants;
@@ -36,6 +38,7 @@
3638

3739
public class ResolveClasspathsHandler {
3840
private static final Logger logger = Logger.getLogger(Configuration.LOGGER_NAME);
41+
private static final String SCOPE_ATTRIBUTE = "maven.scope";
3942

4043
/**
4144
* Resolves class path for a java project.
@@ -178,10 +181,10 @@ private static String[] computeDefaultRuntimeClassPath(IJavaProject jproject) th
178181
for (int i = 0; i < unresolved.length; i++) {
179182
IRuntimeClasspathEntry entry = unresolved[i];
180183
if (entry.getClasspathProperty() == IRuntimeClasspathEntry.USER_CLASSES) {
181-
IRuntimeClasspathEntry[] entries = JavaRuntime.resolveRuntimeClasspathEntry(entry, jproject);
184+
IRuntimeClasspathEntry[] entries = JavaRuntime.resolveRuntimeClasspathEntry(entry, jproject, true);
182185
for (int j = 0; j < entries.length; j++) {
183186

184-
if (entries[j].getClasspathEntry().isTest()) {
187+
if (entries[j].getClasspathEntry().isTest() && !isRuntime(entries[j].getClasspathEntry())) {
185188
continue;
186189
}
187190
String location = entries[j].getLocation();
@@ -193,4 +196,13 @@ private static String[] computeDefaultRuntimeClassPath(IJavaProject jproject) th
193196
}
194197
return resolved.toArray(new String[resolved.size()]);
195198
}
199+
200+
private static boolean isRuntime(final IClasspathEntry classpathEntry) {
201+
for (IClasspathAttribute attribute : classpathEntry.getExtraAttributes()) {
202+
if (SCOPE_ATTRIBUTE.equals(attribute.getName()) && "runtime".equals(attribute.getValue())) {
203+
return true;
204+
}
205+
}
206+
return false;
207+
}
196208
}

0 commit comments

Comments
 (0)