Gradle6.4、Kotlin 和 JPMS
Gradle 6.4, Kotlin and JPMS
所以,6.4(终于)出来了 JPMS support
迫不及待地想尝试一下,我开始修改我们的一个项目以便使用它。
jjohannes 在他的 repo
中有一个 (kotlin) 示例
我试图 copy/paste 对我们的项目重要 here
可惜我没有成功
每当我尝试 运行 时,我总是得到:
C:\Users\elect\IdeaProjects\kotlin-unsigned\src\main\java\module-info.java:4: error: module not found: kotlin.stdlib.jdk8
requires kotlin.stdlib.jdk8;
参考module-info.java
:
module com.github.kotlin_graphics.kotlin_unsigned {
// requires kotlin.stdlib;
requires kotlin.stdlib.jdk8; // error
exports unsigned;
}
stdlib
或stdlib-jdk8
变化不大
我做错了什么?
我检查了你的仓库。
您将需要这些修复程序。
- 添加了
java
插件。
plugins {
kotlin("jvm") version "1.3.72"
java
}
java {
modularity.inferModulePath.set(true)
}
- 在所有 3 个地方使用
kotlin("stdlib")
(build.gradle.kts 中有 2 个,模块 info.java 中有 1 个)。
dependencies {
implementation(kotlin("stdlib"))
...
components { withModule<ModularKotlinRule>(kotlin("stdlib")) }
}
module com.github.kotlin_graphics.kotlin_unsigned {
requires kotlin.stdlib;
// requires kotlin.stdlib.jdk8;
exports unsigned;
}
对于 kotlin("stdlib-jdk8")
,您需要将其添加到 kotlin("stdlib")
旁边
dependencies {
implementation(kotlin("stdlib"))
implementation(kotlin("stdlib-jdk8"))
...
components { withModule<ModularKotlinRule>(kotlin("stdlib")) }
components { withModule<ModularKotlinRule>(kotlin("stdlib-jdk8")) }
}
那么,你的module-info.java
可以
module com.github.kotlin_graphics.kotlin_unsigned {
// requires kotlin.stdlib;
requires kotlin.stdlib.jdk8;
exports unsigned;
}
./gradlew build
为我构建成功。
我还添加以添加缺少的测试依赖项:
testImplementation("io.kotlintest:kotlintest-runner-junit5:$kotlintest_version")
更新:已列出 stdlib
和 stdlb-jdk8
所以,6.4(终于)出来了 JPMS support
迫不及待地想尝试一下,我开始修改我们的一个项目以便使用它。
jjohannes 在他的 repo
中有一个 (kotlin) 示例我试图 copy/paste 对我们的项目重要 here
可惜我没有成功
每当我尝试 运行 时,我总是得到:
C:\Users\elect\IdeaProjects\kotlin-unsigned\src\main\java\module-info.java:4: error: module not found: kotlin.stdlib.jdk8 requires kotlin.stdlib.jdk8;
参考module-info.java
:
module com.github.kotlin_graphics.kotlin_unsigned {
// requires kotlin.stdlib;
requires kotlin.stdlib.jdk8; // error
exports unsigned;
}
stdlib
或stdlib-jdk8
变化不大
我做错了什么?
我检查了你的仓库。
您将需要这些修复程序。
- 添加了
java
插件。
plugins {
kotlin("jvm") version "1.3.72"
java
}
java {
modularity.inferModulePath.set(true)
}
- 在所有 3 个地方使用
kotlin("stdlib")
(build.gradle.kts 中有 2 个,模块 info.java 中有 1 个)。
dependencies {
implementation(kotlin("stdlib"))
...
components { withModule<ModularKotlinRule>(kotlin("stdlib")) }
}
module com.github.kotlin_graphics.kotlin_unsigned {
requires kotlin.stdlib;
// requires kotlin.stdlib.jdk8;
exports unsigned;
}
对于 kotlin("stdlib-jdk8")
,您需要将其添加到 kotlin("stdlib")
dependencies {
implementation(kotlin("stdlib"))
implementation(kotlin("stdlib-jdk8"))
...
components { withModule<ModularKotlinRule>(kotlin("stdlib")) }
components { withModule<ModularKotlinRule>(kotlin("stdlib-jdk8")) }
}
那么,你的module-info.java
可以
module com.github.kotlin_graphics.kotlin_unsigned {
// requires kotlin.stdlib;
requires kotlin.stdlib.jdk8;
exports unsigned;
}
./gradlew build
为我构建成功。
我还添加以添加缺少的测试依赖项:
testImplementation("io.kotlintest:kotlintest-runner-junit5:$kotlintest_version")
更新:已列出 stdlib
和 stdlb-jdk8