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

iso*_*tel 9 eclipse jar jetty war gradle

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

apply plugin: 'war'

jar.enabled = false
war {
    dependencies {
        runtime project(':application1')
        runtime project(':application2')
    }
}
Run Code Online (Sandbox Code Playgroud)

application2取决于application1:

dependencies {
    compile '...:application1:1.+'
}
Run Code Online (Sandbox Code Playgroud)

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

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

Sta*_*lav 0

您已application1为根项目和application2.

对于您来说application2,它是作为对某个存储库中的库的依赖项而创建的,但是您的根项目依赖于它作为子项目。Gradle 无法确定存储库中的某些库与子项目的工件相同。

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

compile '...:application1:1.+'
Run Code Online (Sandbox Code Playgroud)

或作为

runtime project(':application1')
Run Code Online (Sandbox Code Playgroud)

不管怎样,在这两种情况下使它依赖于同一个子项目,而不是依赖于某个项目和回购库中的库,这似乎是更好的选择。