如何使用 kotlin dsl Gradle 将编译器参数传递给 java Compiler
Posted
技术标签:
【中文标题】如何使用 kotlin dsl Gradle 将编译器参数传递给 java Compiler【英文标题】:How to pass compiler arguments to java Compiler with kotlin dsl Gradle 【发布时间】:2021-09-18 05:42:28 【问题描述】:我想为我的 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
任务时,出现以下错误。
出了什么问题: 任务 ':compileJava' 执行失败。尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。错误:无效标志:--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:根据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+。
【讨论】:
以上是关于如何使用 kotlin dsl Gradle 将编译器参数传递给 java Compiler的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Gradle Kotlin DSL 对 Spring Boot 应用程序进行 Dockerize
Kotlin DSL 中的 gradle 额外属性是如何设置的?
如何将 Gradle 中的原生 JUnit 5 支持与 Kotlin DSL 结合使用?
如何从非 build-gradle 文件访问 Kotlin DSL 扩展?