gpt4 book ai didi

java - Gradle 平台与 java 库的依赖关系

转载 作者:行者123 更新时间:2023-12-05 06:11:54 25 4
gpt4 key购买 nike

我们有几个公共(public)库,它们使用 java-library Gradle 插件,并通过平台依赖于 Micronaut 的 BOM 依赖于 Micronaut。这两个项目都使用 Gradle 6.6.1,这是撰写本文时的最新版本。

build.gradle

plugins {
id "java-library"
}

repositories {
mavenLocal()
mavenCentral()
}

dependencies {

annotationProcessor (
platform("io.micronaut:micronaut-bom:$micronautVersion"),
"io.micronaut:micronaut-inject-java"
)

implementation(
platform("io.micronaut:micronaut-bom:$micronautVersion"),
"io.micronaut:micronaut-inject"
)

testAnnotationProcessor(
enforcedPlatform("io.micronaut:micronaut-bom:$micronautVersion"),
"io.micronaut:micronaut-inject-java"
)

testImplementation(
enforcedPlatform("io.micronaut:micronaut-bom:$micronautVersion"),
"io.micronaut:micronaut-runtime",
"io.micronaut:micronaut-http-server-netty",
"io.micronaut:micronaut-http-client"
)
}

当我尝试在应用程序中使用我的库时,该应用程序使用应用程序 Gradle 插件并且还对 Micronaut 的 BOM 具有平台依赖性,我收到一条错误消息,指出它无法解析库使用的 Micronaut BOM。但它永远无法解决该依赖关系,因为它是 BOM,而不是库。

应用build.gradle

plugins {
id "application"
id "java"
}

repositories {
mavenLocal()
mavenCentral()
}

dependencies {
implementation(
"my.group:library:${libraryVersion}",

platform("io.micronaut:micronaut-bom:${micronautVersion}"),
"io.micronaut:micronaut-http-client",
"io.micronaut:micronaut-http-server-netty",
"io.micronaut:micronaut-inject",
"io.micronaut:micronaut-management",
"io.micronaut:micronaut-runtime",
"io.micronaut:micronaut-validation"
)
}


然后我得到以下错误。

Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve io.micronaut:micronaut-bom:2.0.1.
Required by:
project : > my.group:library:11.0.0-SNAPSHOT
Caused by: org.gradle.internal.component.NoMatchingConfigurationSelectionException: No matching variant of io.micronaut:micronaut-bom:2.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 14, packaged as a jar, and its dependencies declared externally but:
- Variant 'apiElements' capability io.micronaut:micronaut-bom:2.0.1:
- Incompatible because this component declares an API of a platform and the consumer needed a runtime of a library
- Other compatible attributes:
- Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
- Doesn't say anything about its target Java version (required compatibility with Java 14)
- Doesn't say anything about its elements (required them packaged as a jar)

我已经尝试阅读有关变体选择的 Gradle 文档,但它对我来说真的没有多大意义。任何人都知道我需要如何声明依赖项才能使它工作?这似乎是一件非常微不足道的事情,但我还没有找到任何关于这个的东西......

最佳答案

我正在使用 Gradle v7.4 并且能够通过将其添加到我的 build.gradle 来解决问题:

java {
disableAutoTargetJvm()
}

我在 Upgrading Gradle version 5.x to 6.0 notes 中找到了答案.

关于java - Gradle 平台与 java 库的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63755291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com