2

JDK 13 を使用してJPMS モジュールからアプリケーションを構築するために、 modulepluginで Gradle (6.0.1) を使用しています。

ただし、プラグインを適用しapplicationその設定を行っても、属性がmainClassName設定されないため、スタンドアロン JVM に jlink して実行すると、次のメッセージが表示されます。ModuleMainClassmodule-info.classjava -m mymodule

module mymodule does not have a ModuleMainClass attribute, use -m <module>/<main-class>

内部を掘り下げると、moduleplugin は jar タスクをまったく変更しないように見えます。また、すぐに使用できる gradle jar タスクは実際には JDK のjarコマンドを使用せず、すべてを圧縮するだけです。

ModuleMainClass属性を設定する唯一の方法module-info.classは、JDKのjarコマンドを次のように使用することですjar --main-class=CLASSNAME -C <classes dir>

自分のgradleタスクを書く以外に、これを行う方法はありますか? そうでない場合は、gradle jar タスクを JDK コマンドを呼び出すタスクに置き換える例を誰かが持っていますか?

(この質問は、jar の MANIFEST.MF に を設定することに関するものではないことに注意してください。これは簡単ですが、 を呼び出すときには尊重されません。)Main-Classjava -m <modulename>

4

1 に答える 1