我的问题:如何为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 .;
然后我编译并打包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 .;
然后我可以通过添加模块路径来部分运行或链接它。
java -p lib -m appMod;
jlink -p lib --add-modules appMod --launcher launch=appMod --output dist;
dist/bin/launch
我现在想在Gradle中做同样的练习,但是我不知道该怎么做等同于设置模块路径,例如-p lib
。我见过sourceSets的代码和dependencies的无数变种,但到目前为止,我还无法将所有有用的东西放在一起。我还阅读了相互矛盾的声明,它们都说Gradle doesn't fully support Java modules和那个Gradle does support them。