代码之家  ›  专栏  ›  技术社区  ›  Hakanai

使用Gradle版本目录时,如何获得带有分类器的工件?

  •  0
  • Hakanai  · 技术社区  · 3 年前

    我试图建立一个Kotlin项目,它想要一些仅运行时的依赖项,但这些依赖项来自分类器。

    我正在使用 libs.versions.toml catalog文件来存储所有版本,但Gradle决定该目录文件不能存储分类器信息,所以现在我正试图找到一种不使用目录的方法来指定它。

    kotlin {
        // ...
        sourceSets {
            val jvmMain by getting {
                dependencies {
                    // ...
                    implementation(libs.lwjgl)
                    implementation(libs.lwjgl.openvr)
    
                    runtimeOnly(libs.lwjgl.openvr) // but want classifier = "native-windows"
                }
            }
            val jvmTest by getting
        }
    }
    

    迄今为止已尝试

    1. 在…上 a Gradle ticket ,他们说会是这样的:
    runtimeOnly(libs.lwjgl.openvr) {
        artifact {
            classifier = "native-windows"
        }
    }
    

    然而,这并不起作用,因为 runtimeOnly 这需要两个 Any 以及配置动作。如果我把它作为字符串提供,它就可以工作了,但我不再使用版本目录了。

    1. 类似的问题得到了回答 here 会让我使用这个:
    implementation(variantOf(libs.lwjgl.openvr) {
        classifier("native-windows")
    })
    

    然而,这似乎也无效-否 variantOf 函数存在,我找不到从哪里导入它,到目前为止还没有人说他们从哪里得到它。

    1. 然后我尝试了通常的破解方法,比如 .apply{} …但看起来我在任何时候得到的对象类型都不是能够设置分类器的正确类型。

    所以我没有想法,没有放弃另一个项目中的目录功能,因为它阻碍了我做任何有用的事情。

    正在播放的版本:

    • 7.5.1级
    • Kotlin多平台插件1.6.10
    0 回复  |  直到 3 年前