gradle - 如何使用 kotlin dsl Gradle 将编译器参数传递给 java 编译器

标签 gradle gradle-kotlin-dsl

我想为我的 gradle 构建任务向 java 编译器添加参数 --add-exports java.rmi/sun.rmi.server=ALL-UNNAMED。我正在使用 gradle kotlin dsl。

下面是更新后的 JavaCompiler 任务。

tasks.withType<JavaCompile> {
    val compilerArgs = options.compilerArgs
    compilerArgs.add("--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED ")
}

当我运行 gradle compileJava 任务时,出现以下错误。

  • What went wrong: Execution failed for task ':compileJava'.

error: invalid flag: --add-exports java.rmi/sun.rmi.server=ALL-UNNAMED

  • 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

我该如何解决这个问题?

最佳答案

根据javadoc , options.compilerArgs返回 List<String> .所以你可以这样写:

tasks.withType<JavaCompile> {
    val compilerArgs = options.compilerArgs
    compilerArgs.addAll(listOf("--add-exports", "java.rmi/sun.rmi.server=ALL-UNNAMED"))
}

还要确保你有 Java 9+。

关于gradle - 如何使用 kotlin dsl Gradle 将编译器参数传递给 java 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69231925/

相关文章:

android - 在 Android Studio 中创建基于 Phonegap 的 Android 应用

kotlin - sourceSets with gradle kotlin DSL in Grade 4.10rc

gradle - 为什么我无法使用 Gradle Kotlin DSL (5.0) 访问 build.gradle.kts 的 "plugins"部分中的项目属性?

Android gradle plugin(7.0.0-alpha15) 移除了 variantFilter 属性,如何恢复功能?

java - 在artifactory中为jar设置别名

android - 使用adb安装apk的Gradle任务未被执行

gradle - 让子项目依赖其他子项目时的CircularReferenceException

android-gradle-plugin - 仅向 Kotlin DSL 中的 "free"产品风格添加实现依赖

selenium - 如何添加Gradle Kotlin依赖编译组: 'org.seleniumhq.selenium' ?

android - Gradle错误: “Failed to apply plugin [id ‘myappid’]”