gpt4 book ai didi

java - 如何使用 Gradle 设置 JPMS 模块的 ModuleMainClass 属性?

转载 作者:行者123 更新时间:2023-12-03 03:07:20 24 4
gpt4 key购买 nike

我正在使用带有 moduleplugin 的 Gradle (6.0.1)使用 JPMS modules 构建应用程序使用 JDK 13。

但是,即使使用 the application plugin应用及其mainClassName设置它不设置ModuleMainClass module-info.class 中的属性,所以当我将它链接到一个独立的 JVM 并运行 java -m mymodule我收到这条消息:
module mymodule does not have a ModuleMainClass attribute, use -m <module>/<main-class>
深入挖掘,moduleplugin 似乎根本没有改变 jar 任务,而且开箱即用的 gradle jar 任务实际上并没有使用 the JDK's jar command ,它只是把所有东西都拉上 zipper 。

据我所知,设置 ModuleMainClass 的唯一方法是module-info.class 中的属性就是这样使用JDK的jar命令:jar --main-class=CLASSNAME -C <classes dir> .

除了编写我自己的 gradle 任务之外,有没有办法做到这一点?如果没有,有没有人有一个用调用 JDK 命令替换 gradle jar 任务的例子?

(请注意,这个问题不是关于在 jar 的 MANIFEST.MF 中设置 Main-Class - 这很容易,但在调用 java -m <modulename> 时不受尊重。)

最佳答案

它看起来像 jar gradle 中的任务在构建 jar 以包含 module-main-class 方面做得不好在 module-info.class .事实上,它看起来不像调用 jar命令根本有点误导。所以这是一个更新的版本:

jar {
doLast {
project.exec {
workingDir destinationDirectory.get()
executable 'jar'
args '--update'
args '--file', archiveFileName.get()
args '--main-class', mainClassName
args '.'
}
}
}

Jar 命令语法部分取自 tutorial .

这看起来很笨拙,但它可以工作,希望有一天 Jar任务将包括最后一部分。

关于java - 如何使用 Gradle 设置 JPMS 模块的 ModuleMainClass 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59117333/

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