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

问题描述 投票:1回答:1

我将Gradle(6.0.1)与moduleplugin结合使用,以使用JDK 13从JPMS modules中构建应用程序。

但是,即使应用了the application plugin并设置了application,它也不会在mainClassName中设置ModuleMainClass属性,因此当我将其链接到独立的JVM并运行module-info.class时,我得到以下消息:

java -m mymodule

在幕后挖掘,看起来好像moduleplugin根本不会改变jar任务,开箱即用的gradle jar任务实际上并没有使用module mymodule does not have a ModuleMainClass attribute, use -m <module>/<main-class>,它只是将所有内容自身压缩了。

据我所知,在the JDK's jar command中设置jar属性的唯一方法是使用JDK的jar命令:ModuleMainClass

除了编写我自己的gradle任务之外,还有其他方法吗?如果不是,是否有人举过一个用调用JDK命令的替换gradle jar任务的示例?

((请注意,关于在jar的MANIFEST.MF中设置module-info.class的问题是[[not-很简单,但在调用jar --main-class=CLASSNAME -C <classes dir>时不受尊重。)

java gradle java-module java-13
1个回答
1
投票
[似乎gradle中的Main-Class任务无法正确完成构建jar的工作,以将java -m <modulename>也包含在jar中。实际上,它看起来根本不像调用module-main-class命令,这有点误导。因此,这是执行此操作的更新版本:
© www.soinside.com 2019 - 2024. All rights reserved.