Jakarta ee Gradle shadowJar编译依赖项
我有一个gradle项目。有一个根Gradle文件夹,其中包含两个子项目-common和applicationJakarta ee Gradle shadowJar编译依赖项,jakarta-ee,gradle,build.gradle,shadowjar,Jakarta Ee,Gradle,Build.gradle,Shadowjar,我有一个gradle项目。有一个根Gradle文件夹,其中包含两个子项目-common和application | -common/ -build-gradle | -application/ | -build.gradle |build.gradle |settings.gradle 普通 通过ShadowJar输出包含所有JAR依赖项的JAR文件 只有来自Maven中央存储库的依赖项,没有其他依赖项 应用程序 输出WAR文件 将
| -common/
-build-gradle
| -application/
| -build.gradle
|build.gradle
|settings.gradle
普通
- 通过ShadowJar输出包含所有JAR依赖项的JAR文件
- 只有来自Maven中央存储库的依赖项,没有其他依赖项
- 输出WAR文件
- 将Common的shadowJar作为依赖项
- 具有来自Maven中央存储库的其他依赖项
subprojects{
tasks.jar.enabled = false
artifacts{
shadowJar
}
build.dependsOn(shadowJar);
}
在Application/build.gradle中,我还有一行
compile files('../common/build/libs/common.jar')
然后我在根上运行构建任务。不知何故,首先构建公共项目,然后将ShadowJar包含在应用程序的WAR中
这远远不是最优的。我希望将应用程序对Common的依赖性定义为compileproject(“:Common”),而不是指向固定的文件名。然而,“compile project”语句显然不会在公共模块中生成shadowJar,也不会在WAR-in-Application模块中包含它。为什么不直接构建应用程序的WAR文件而不使用shadowJar呢?Gradle将把公共子项目作为一个小jar及其所有依赖项放入libs中。您将
common
子项目作为war库中的胖罐子的动机是什么?