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

标签 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,因为这简化了使用嵌入式Jetty的Eclipse中的调试:Eclipse自动将application1.jar添加到Jetty服务器启动配置的类路径中。

最佳答案

您已经为根项目和application1指定了对application2项目的依赖项。

对于application2,它被视为对某个存储库中的库的依赖,但是您的根项目像子项目一样依赖于它。 Gradle无法确定 repo 中的某些库与子项目的工件相同。

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

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

或作为
runtime project(':application1')

无论如何,在两种情况下都取决于同一子项目,而不是某个项目和 repo 中的库,似乎是可取的。

关于eclipse - Gradle:产生的WAR文件有两个来自子项目的JAR版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947404/

相关文章:

java - Eclipse:如何在应用程序库中搜索字符串?

c - Eclipse:构建后没有这样的文件或目录

unit-testing - Jacoco在我的Gradle项目中未显示Spock代码覆盖率

java - 使用 gradle 创建 jar,导入类时无法看到同一包中的其他类

java - 更新 jar 中的文件会抛出 ZipException

java - 加载包含在 .Jar 文件或类路径中的资源(图像)

java - 如何在 Windows 上使用单个命令执行 .jar 文件?

android - Eclipse 不在新的 Android 项目中生成文件

java - 一些最近更改的资源尚未发布

gradle - 如何在没有Shadow Pom的情况下发布Gradle阴影 jar