Мой вопрос: как мне задать путь к модулю для gradle build
?
Мне стало удобно работать с модулями Java из командной строки. Я часто выполняю упражнение в Powershell, в результате которого получаются следующие исходные файлы.
└───src
├───appMod
│ │ module-info.java
│ │
│ └───appPack
│ Entry.java
│
└───greetMod
│ module-info.java
│
└───greetPack
Hello.java
appMod / module-info
module appMod {
requires greetMod;
}
appMod / appPack.Entry
package appPack;
import greetPack.Hello;
public class Entry {
public static void main(String[] args) {
System.out.println(new Hello().sayHello());
}
}
greetMod / module-info
module greetMod {
exports greetPack;
}
greetMod / greetPack.Hello
package greetPack;
public class Hello {
public String sayHello() {
return "Greetings from Hello class!";
}
}
Поскольку для модуля appMod требуется greetMod, я сначала компилирую и запускаю greetMod.
javac -d out/greetMod src/greetMod/module-info.java src/greetMod/greetPack/Hello.java;
jar cf lib/greetJar.jar -C out/greetMod .;
Затем я компилирую и jar appMod, но при этом я указываю путь к модулю (-p), где можно найти новый greetMod jar (greetJar) (в lib).
javac -d out/appMod -p lib src/appMod/module-info.java src/appMod/appPack/Entry.java;
jar cfe lib/appJar.jar appPack.Entry -C out/appMod .;
Я могузатем запустите это или jlink это частично, добавив путь к модулю.
java -p lib -m appMod;
jlink -p lib --add-modules appMod --launcher launch=appMod --output dist;
dist/bin/launch
Теперь я хочу сделать то же самое упражнение в Gradle, но я не могу понять, как сделать эквивалент установки модуляпуть, такой как -p lib
. Я видел код для sourceSets и бесчисленные вариации зависимостей , но до сих пор я не смог собрать что-то, что работает. Я также читал противоречивые утверждения, в которых говорится, что Gradle не полностью поддерживает модули Java и что Gradle поддерживает их .