Skip to content

Commit d10bf81

Browse files
authored
Merge pull request #8797 from wrprice/issue8764
Fix #8764 Gradle 9 ProjectDependency resolution to other project
2 parents 332ec88 + 3f28822 commit d10bf81

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import java.util.Optional;
5050
import java.util.Set;
5151
import java.util.function.Consumer;
52+
import java.util.function.Function;
5253
import java.util.function.Supplier;
5354
import java.util.regex.Pattern;
5455
import java.util.stream.Collectors;
@@ -1562,6 +1563,23 @@ private void detectDependencies(NbProjectInfoModel model) {
15621563
boolean ignoreUnresolvable = (project.getPlugins().hasPlugin("java-platform") &&
15631564
Boolean.TRUE.equals(getProperty(project, "javaPlatform", "allowDependencies")));
15641565

1566+
// https://github.com/apache/netbeans/issues/8764
1567+
Function<ProjectDependency, Project> projDependencyToProject =
1568+
sinceGradleOrDefault(
1569+
"9.0",
1570+
() -> {
1571+
Method getPath = ProjectDependency.class.getMethod("getPath");
1572+
return dep -> {
1573+
try {
1574+
String path = (String) getPath.invoke(dep);
1575+
return project.findProject(path);
1576+
} catch (ReflectiveOperationException e) {
1577+
throw new UnsupportedOperationException(e);
1578+
}
1579+
};
1580+
},
1581+
() -> ProjectDependency::getDependencyProject); // removed in Gradle 9
1582+
15651583
visibleConfigurations.forEach(it -> {
15661584
String propBase = "configuration_" + it.getName() + "_";
15671585
model.getInfo().put(propBase + "non_resolving", !resolvable(it));
@@ -1660,7 +1678,7 @@ private void detectDependencies(NbProjectInfoModel model) {
16601678
String a;
16611679
if (d instanceof ProjectDependency) {
16621680
sb.append("*project:"); // NOI18N
1663-
Project other = ((ProjectDependency)d).getDependencyProject();
1681+
Project other = projDependencyToProject.apply((ProjectDependency) d);
16641682
g = other.getGroup().toString();
16651683
a = other.getName();
16661684
} else {
@@ -1679,7 +1697,7 @@ private void detectDependencies(NbProjectInfoModel model) {
16791697
long time_project_deps = System.currentTimeMillis();
16801698
model.registerPerf(depPrefix + "module", time_project_deps - time_inspect_conf);
16811699
it.getDependencies().withType(ProjectDependency.class).forEach(it2 -> {
1682-
Project prj = it2.getDependencyProject();
1700+
Project prj = projDependencyToProject.apply(it2);
16831701
projects.put(prj.getPath(), prj.getProjectDir());
16841702
projectNames.add(prj.getPath());
16851703
});

0 commit comments

Comments
 (0)