我有一个构建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/