@@ -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+
356375tasks.register<Exec >(" pipInstall" ) {
357376 inputs.file(" requirements.txt" )
358377 commandLine(" python3" , " -m" , " pip" , " install" , " -r" , " requirements.txt" )
0 commit comments