Skip to content

Commit d2b8131

Browse files
Merge pull request #1688 from JetBrains/feature/all-provided-deps
build: put all transitive dependencies as provided in the POM as well
2 parents e895d92 + 208cdb5 commit d2b8131

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

build.gradle.kts

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -335,24 +335,43 @@ publishing {
335335
withXml {
336336
val dependenciesNode = asNode().appendNode("dependencies")
337337

338-
for (dep in bundledDependencies) {
339-
dep.configuration.get().resolvedConfiguration.firstLevelModuleDependencies.forEach {
340-
val dependencyNode = dependenciesNode.appendNode("dependency")
341-
dependencyNode.appendNode("groupId", it.moduleGroup)
342-
dependencyNode.appendNode("artifactId", it.moduleName)
343-
dependencyNode.appendNode("version", it.moduleVersion)
344-
if (it.moduleArtifacts.isNotEmpty()) {
345-
dependencyNode.appendNode("type", it.moduleArtifacts.first().type)
346-
}
347-
dependencyNode.appendNode("scope", "provided")
338+
forEachBundledDependency {
339+
val dependencyNode = dependenciesNode.appendNode("dependency")
340+
dependencyNode.appendNode("groupId", it.moduleGroup)
341+
dependencyNode.appendNode("artifactId", it.moduleName)
342+
dependencyNode.appendNode("version", it.moduleVersion)
343+
if (it.moduleArtifacts.isNotEmpty()) {
344+
dependencyNode.appendNode("type", it.moduleArtifacts.first().type)
348345
}
346+
dependencyNode.appendNode("scope", "provided")
349347
}
350348
}
351349
}
352350
}
353351
}
354352
}
355353

354+
/**
355+
* Visit each bundled dependency, including its transitive dependencies.
356+
*/
357+
fun forEachBundledDependency(action: (ResolvedDependency) -> Unit) {
358+
val seen = mutableSetOf<ResolvedDependency>()
359+
360+
val queue = ArrayDeque<ResolvedDependency>()
361+
362+
for (bundledDependency in bundledDependencies) {
363+
queue.addAll(bundledDependency.configuration.get().resolvedConfiguration.firstLevelModuleDependencies)
364+
365+
while (queue.isNotEmpty()) {
366+
val dep = queue.removeFirst()
367+
if (seen.add(dep)) {
368+
action(dep)
369+
queue.addAll(dep.children)
370+
}
371+
}
372+
}
373+
}
374+
356375
tasks.register<Exec>("pipInstall") {
357376
inputs.file("requirements.txt")
358377
commandLine("python3", "-m", "pip", "install", "-r", "requirements.txt")

0 commit comments

Comments
 (0)