我有一个构建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服务器启动配置的类路径中。
答案 0 :(得分:0)
您已为application1
项目指定了对根项目和application2
的不同依赖关系。
对于您的application2
,它是作为某个存储库中的库的依赖项,但您的根项目依赖于它在子项目上。 Gradle无法确定repo中的某些库与子项目的工件是否相同。
如果您不想获得同一个库的2个版本,则必须使其依赖于同一个库:
compile '...:application1:1.+'
或
runtime project(':application1')
无论如何,它似乎是令人难以忍受的,在两种情况下依赖于相同的子项目,而不是在某些项目和repo中的库上。