我有一个gradle项目。有一个根Gradle文件夹,包含两个子项目 - common和application。
| -common/
-build-gradle
| -application/
| -build.gradle
|build.gradle
|settings.gradle
公用
应用
我想要实现的目标
当我在Application上运行 gradle war 时,我想创建一个包含所有Maven依赖项的jar,以及Common项目的ShadowJar。
问题在于ShadowJar部分。在Application上执行 gradle war 时,Common中没有构建工件。我想在战争中建立并加入shadowJar。
当前解决方案 我将其添加到root的build.gradle
中subprojects{
tasks.jar.enabled = false
artifacts{
shadowJar
}
build.dependsOn(shadowJar);
}
在Application / build.gradle中,我还有一行
compile files('../common/build/libs/common.jar')
然后我在root上运行构建任务。不知何故,首先构建了通用项目,并将ShadowJar包含在应用程序的WAR中。
这远非最佳。我希望应用程序依赖于Common定义为编译项目(':common'),而不是指向固定文件名。然而,"编译项目"声明显然不会在Common模块中生成shadowJar,也不会将它包含在Application模块的WAR中。