Gradle shadowJar编译依赖项

时间:2016-03-17 07:06:28

标签: java-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的常见阴影作为依赖。
  • 具有来自Maven中央存储库的其他依赖项

我想要实现的目标

当我在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中。

0 个答案:

没有答案