Gradle Init Java 库无法解析 lib“目标”的依赖关系

问题描述 投票:0回答:1

我的机器上有 Java 17 和 Gradle 8.3。

我使用以下方法创建一个新的 Java 库项目:

gradle init --type java-library

我按照提示操作,它会生成一个具有如下目录结构的项目:

myapp/
  lib/
    src/main/java/<some-generated-java-code-here>
    build.gradle
  gradle.properties
  settings.gradle

我运行

gradle wrapper
,然后进入
build.gradle
并添加一些依赖项,使其看起来像:

plugins {
    id 'java-library'
}

group 'me.myself'
version '24.0.2'

repositories {
    mavenCentral()
}

dependencies {

    api 'org.apache.commons:commons-math3:3.6.1'

    implementation (
            'com.google.guava:guava:32.1.1-jre'

            ,'org.keycloak:keycloak-core'
            ,'org.keycloak:keycloak-server-spi'
            ,'org.keycloak:keycloak-server-spi-private'
            ,'org.keycloak:keycloak-services'
            ,'org.jboss.logging:jboss-logging'
            ,'org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec'
    )
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

jar {
    archiveBaseName = 'myapp-keycloak-customizer'
    archiveVersion = '24.0.2'
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

在 IntelliJ 中,我去构建项目,只是为了拉入/解决新的依赖项,但出现以下错误:

:lib:main: Could not find org.keycloak:keycloak-core:.
Required by:
    project :lib

我已验证

org.keycloak:keycloak-core
是 Maven Central 的有效条目。另外,正如您将在下面看到的,它甚至找不到 JBoss Logging,因此这不是 Maven 或 Keycloak 依赖问题。我还可以验证我有完整的 wifi 并且没有网络问题。

因此,我从终端运行

./gradlew build --debug
,得到大量输出,有趣的部分是:

[ERROR] [o.g.i.b.BuildExceptionReporter] FAILURE: Build failed with an exception.
[ERROR] [o.g.i.b.BuildExceptionReporter] 
[ERROR] [o.g.i.b.BuildExceptionReporter] * What went wrong:
[ERROR] [o.g.i.b.BuildExceptionReporter] Execution failed for task ':lib:compileJava'.
[ERROR] [o.g.i.b.BuildExceptionReporter] > Could not resolve all files for configuration ':lib:compileClasspath'.
[ERROR] [o.g.i.b.BuildExceptionReporter]    > Could not find org.keycloak:keycloak-core:.
[ERROR] [o.g.i.b.BuildExceptionReporter]      Required by:
[ERROR] [o.g.i.b.BuildExceptionReporter]          project :lib
[ERROR] [o.g.i.b.BuildExceptionReporter]    > Could not find org.keycloak:keycloak-server-spi:.
[ERROR] [o.g.i.b.BuildExceptionReporter]      Required by:
[ERROR] [o.g.i.b.BuildExceptionReporter]          project :lib
[ERROR] [o.g.i.b.BuildExceptionReporter]    > Could not find org.keycloak:keycloak-server-spi-private:.
[ERROR] [o.g.i.b.BuildExceptionReporter]      Required by:
[ERROR] [o.g.i.b.BuildExceptionReporter]          project :lib
[ERROR] [o.g.i.b.BuildExceptionReporter]    > Could not find org.keycloak:keycloak-services:.
[ERROR] [o.g.i.b.BuildExceptionReporter]      Required by:
[ERROR] [o.g.i.b.BuildExceptionReporter]          project :lib
[ERROR] [o.g.i.b.BuildExceptionReporter]    > Could not find org.jboss.logging:jboss-logging:.
[ERROR] [o.g.i.b.BuildExceptionReporter]      Required by:
[ERROR] [o.g.i.b.BuildExceptionReporter]          project :lib
[ERROR] [o.g.i.b.BuildExceptionReporter]    > Could not find org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:.
[ERROR] [o.g.i.b.BuildExceptionReporter]      Required by:
[ERROR] [o.g.i.b.BuildExceptionReporter]          project :lib

它几乎就像是在

lib
目录中查找我的依赖项,而不是从 Maven Central 中提取它们? 任何人都可以发现我出错的地方并帮助我建造这个东西吗?

java gradle maven-central
1个回答
0
投票

您需要为每个库调用

implementation
,并每次提供版本。

dependencies {
    def keycloakVersion = '24.0.3'
    implementation 'com.google.guava:guava:32.1.1-jre'
    implementation "org.keycloak:keycloak-core:$keycloakVersion"
    implementation "org.keycloak:keycloak-server-spi:$keycloakVersion"
    //...
}

我们在那里使用一些 Groovy 功能,即 定义变量字符串插值

© www.soinside.com 2019 - 2024. All rights reserved.