【发布时间】:2020-03-01 15:24:54
【问题描述】:
我的问题:如何为gradle build 设置模块路径?
我已经习惯了从命令行使用 Java 模块。我经常在 Powershell 中进行练习,结果生成了这些源文件。
└───src
├───appMod
│ │ module-info.java
│ │
│ └───appPack
│ Entry.java
│
└───greetMod
│ module-info.java
│
└───greetPack
Hello.java
appMod/模块信息
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 greetMod {
exports greetPack;
}
greetMod/greetPack.Hello
package greetPack;
public class Hello {
public String sayHello() {
return "Greetings from Hello class!";
}
}
由于appMod模块需要greetMod,所以我先编译jargreetMod。
javac -d out/greetMod src/greetMod/module-info.java src/greetMod/greetPack/Hello.java;
jar cf lib/greetJar.jar -C out/greetMod .;
然后我编译并 jar appMod,但在此过程中,我指定了新的 greetMod jar (greetJar) 所在的模块路径 (-p)(在 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。
【问题讨论】:
标签: java gradle command-line dependencies java-module