Gradle:生成的WAR文件有两个版本的JAR来自子项目

时间:2016-04-29 21:04:14

标签: eclipse gradle jar jetty war

我有一个构建WAR的根项目,以及两个构建JAR的子项目。根项目以这种方式引用子项目:

apply plugin: 'war'

jar.enabled = false
war {
    dependencies {
        runtime project(':application1')
        runtime project(':application2')
    }
}

application2取决于application1:

dependencies {
    compile '...:application1:1.+'
}

WAR文件包含两个版本的application1.jar:一个来自存储库,另一个刚刚构建。

编辑:Application2必须依赖于application1作为JAR,因为这简化了Eclipse中使用嵌入式Jetty的调试:Eclipse自动将application1.jar添加到Jetty服务器启动配置的类路径中。

1 个答案:

答案 0 :(得分:0)

您已为application1项目指定了对根项目和application2的不同依赖关系。

对于您的application2,它是作为某个存储库中的库的依赖项,但您的根项目依赖于它在子项目上。 Gradle无法确定repo中的某些库与子项目的工件是否相同。

如果您不想获得同一个库的2个版本,则必须使其依赖于同一个库:

compile '...:application1:1.+'

runtime project(':application1')

无论如何,它似乎是令人难以忍受的,在两种情况下依赖于相同的子项目,而不是在某些项目和repo中的库上。