gpt4 book ai didi

android - Unresolved reference : Libraries - buildSrc

转载 作者:行者123 更新时间:2023-12-05 03:27:25 39 4
gpt4 key购买 nike

我正在尝试切换到使用 Kotlin DSL 从对象 Kotlin 文件而不是 gradle 文件获取依赖项版本。当我执行 gradle sync 时,它无法解析引用,但我可以从 build.gradle.kts 单击文件(库)。我没有对 build.gradle 或 settings.gradle 进行任何其他更改。这个问题不是 Jackson 特有的,我在多个项目中尝试过这个问题,并在发布问题之前阅读了文档并搜索了答案。

我得到一个 build.gradle.kts:15:20: Unresolved reference: Libraries

这是我的项目结构

build.gradle
settings.gradle
+buildSrc
build.gradle.kts
+src
+main
+kotlin
Libraries.kt

这是我的build.gradle.kts文件

import org.gradle.kotlin.dsl.`kotlin-dsl`

plugins {
`kotlin-dsl`
java
`java-gradle-plugin`
}


repositories {
mavenCentral()
}

dependencies {
implementation(Libraries.Jackson.core)
// implementation(Libraries.anotherJackson)
}

这是 kotlin Libraries.kt 文件

object Libraries {
val Jackson = JacksonLibraries
const val anotherJackson = "com.fasterxml.jackson.core:jackson-core:2.11.1"

}

object JacksonLibraries {
const val core = "com.fasterxml.jackson.core:jackson-core:${Versions.Jackson.core}"
}

object Versions {
object Jackson {
const val core = "2.11.1"
const val annotations = "2.11.1"
const val databind = "2.11.1"
}
}

如果我在没有库文件的情况下尝试它,它工作正常。

implementation("com.fasterxml.jackson.core:jackson-core:2.11.1")

但是这两个都不行

implementation(Libraries.Jackson.core)
implementation(Libraries.anotherJackson)

提前致谢!

最佳答案

您是否正在尝试访问 ./buildSrc/src/main/kotlin/Libraries.kt./buildSrc/build.gradle.kts ?因为那是不可能的,也没有必要。

基本上不可能使用./buildSrc/src/main/kotlin/Libraries.kt./buildSrc/build.gradle.kts出于同样的原因,您不能使用 <root>/src/main/kotlin/Libraries.kt./<root>/build.gradle.kts . Gradle 构建脚本无法使用他们正在尝试构建的项目的输出。

但是buildSrc is treated as included build , 所以 ./buildSrc/src/main/... 的内容将在 <root>/build.gradle.kts 中提供

版本对齐

版本目录

可以在 ./buildSrc/build.gradle.kts 之间共享版本和 <root>/build.gradle.kts带有版本目录。

libs.versions.toml file是最简单的方法。

简而言之,

  1. 使用 Gradle 7.4+
  2. 创建 <root>/gradle/libs.versions.toml文件
  3. 定义您的依赖项,例如
    [versions]
    groovy = "3.0.5"

    [libraries]
    groovy-core = { module = "org.codehaus.groovy:groovy", version.ref = "groovy" }
  4. <root>/build.gradle.kts , 或任何 <root>/settings.gradle.kts include(...) -ed 子项目,您现在可以访问依赖项(您可能需要刷新 IntelliJ 几次才能自动完成加载)。
    dependencies {
    implementation(libs.groovy.core)
    }

您可以在任何项目中使用相同的版本目录 loading the file .如果您想托管并下载它,那也行!

版本平台

如果你想在几个独立的项目中对齐版本,你可以按照这里的文档:https://docs.gradle.org/current/userguide/platforms.html

版本平台比版本目录更加结构化。它们有点像 Gradle 版本的 Maven BOM,当然它们更灵活!

简而言之,

  1. 创建一个 Gradle 项目,并应用 Java Platform PluginMaven Publish Plugin
  2. 定义约束条件
  3. 将其发布到 Maven 存储库
  4. 将其作为平台依赖项应用于任何项目
    dependencies {
    implementation(platform("my.company:our-own-version-platform:1.2.3"))

    // no need for a version, if our-own-version-platform provides it!
    implementation("org.codehaus.groovy:groovy")
    }

关于android - Unresolved reference : Libraries - buildSrc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71505101/

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