From 78d0cdd155f925fe5283739bb588404506da9fe5 Mon Sep 17 00:00:00 2001 From: Karlatemp Date: Thu, 5 May 2022 22:44:48 +0800 Subject: [PATCH] Fix bom dependencies again; Fix #1975 --- .../src/integTest/kotlin/TestBuildPlugin.kt | 24 +++++++++++++++++++ .../src/main/kotlin/BuildMiraiPluginV2.kt | 10 ++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/mirai-console/tools/gradle-plugin/src/integTest/kotlin/TestBuildPlugin.kt b/mirai-console/tools/gradle-plugin/src/integTest/kotlin/TestBuildPlugin.kt index f77482d4a..0022bff6a 100644 --- a/mirai-console/tools/gradle-plugin/src/integTest/kotlin/TestBuildPlugin.kt +++ b/mirai-console/tools/gradle-plugin/src/integTest/kotlin/TestBuildPlugin.kt @@ -204,6 +204,30 @@ class TestBuildPlugin : AbstractTest() { } } + @Test + fun `can build with bom dependencies 2`() { + tempDir.resolve("build.gradle").appendText( + """ + dependencies { + implementation "com.fasterxml.jackson.core:jackson-annotations:2.12.4" + } + """.trimIndent() + ) + gradleRunner() + .withArguments("buildPlugin", "dependencies", "--stacktrace", "--info") + .build() + + ZipFile(findJar()).use { zipFile -> + + val dpPrivate = zipFile.getInputStream( + zipFile.getEntry("META-INF/mirai-console-plugin/dependencies-private.txt") + ).use { it.readBytes().decodeToString() } + + assertFalse { dpPrivate.contains("com.fasterxml.jackson:jackson-bom") } + assertTrue { dpPrivate.contains("com.fasterxml.jackson.core:jackson-annotations") } + } + } + private fun findJar(): File = tempDir.resolve("build/mirai").listFiles()!!.first { it.name.endsWith(".mirai2.jar") } private fun checkOutput() { diff --git a/mirai-console/tools/gradle-plugin/src/main/kotlin/BuildMiraiPluginV2.kt b/mirai-console/tools/gradle-plugin/src/main/kotlin/BuildMiraiPluginV2.kt index d0595e2e9..df5704c63 100644 --- a/mirai-console/tools/gradle-plugin/src/main/kotlin/BuildMiraiPluginV2.kt +++ b/mirai-console/tools/gradle-plugin/src/main/kotlin/BuildMiraiPluginV2.kt @@ -140,7 +140,12 @@ public open class BuildMiraiPluginV2 : Jar() { } fun linkDependencyTo(resolvedDependency: ResolvedDependency, dependencies: MutableCollection) { - dependencies.add(resolvedDependency.module.toString()) + + // bom files + if (resolvedDependency.allModuleArtifacts.any { it.extension == "jar" }) { + dependencies.add(resolvedDependency.module.toString()) + } + resolvedDependency.children.forEach { linkDependencyTo(it, dependencies) } } @@ -150,9 +155,6 @@ public open class BuildMiraiPluginV2 : Jar() { if (depId in linkedDependencies) { markAsResolved(resolvedDependency) - // bom files - if (resolvedDependency.allModuleArtifacts.none { it.extension == "jar" }) return - linkDependencyTo(resolvedDependency, runtime) if (depId in linkToApi) { linkDependencyTo(resolvedDependency, api)