我有一个gradle项目 . 有一个根Gradle文件夹,包含两个子项目 - common和application .
| -common/
-build-gradle
| -application/
| -build.gradle
|build.gradle
|settings.gradle
Common
-
通过ShadowJar输出包含所有jar依赖项的JAR文件
-
只有来自Maven中央存储库的依赖项,没有其他依赖项
Application
-
输出WAR文件
-
将Common的shadowJar作为依赖项 .
-
具有Maven中央存储库的其他依赖项
What I want to achieve
当我在应用程序上运行gradle war时,我'd like to create a jar with all Maven dependencies in it, as well as Common project'的ShadowJar .
问题在于ShadowJar部分 . 在Application上执行gradle war时,Common中没有构建工件 . 我想把shadowJar建成并加入战争 .
Current solution 我将此添加到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包含在Application的WAR中 .
这远非最佳 . 我希望将Application的依赖关系定义为编译项目(':common'),而不是指向固定的文件名 . 但是,“compile project”语句显然不会在Common模块中生成shadowJar,也不会将它包含在Application模块的WAR中 .