JDK 13 を使用してJPMS モジュールからアプリケーションを構築するために、 modulepluginで Gradle (6.0.1) を使用しています。
ただし、プラグインを適用してapplication
その設定を行っても、属性がmainClassName
設定されないため、スタンドアロン JVM に jlink して実行すると、次のメッセージが表示されます。ModuleMainClass
module-info.class
java -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-Class
java -m <modulename>