我有一个产生战争的网络项目。战争添加了一个jar(我在外部仓库上发布的另一个项目)作为编译依赖。这个jar有自己的编译依赖项,它列在jar的pom文件中,以及项目的构建脚本中(这是一个Gradle项目)。我想将jar以及它自己的所有依赖项添加到war的WEB-INF / lib文件夹中。但是,当我使用Gradle构建Web项目时,只添加直接依赖项,而不是传递依赖项。
这是我的web项目的构建脚本:
apply plugin: 'war'
repositories {
maven {url "http://repo-url"}
}
configurations.all {
resolutionStrategy {
cacheChangingModulesFor 0, 'seconds'
}
}
dependencies {
compile('com.company.group:artifact-name:1.0.0-SNAPSHOT') {
changing = true
transitive = true
}
}
com.company.group:artifact-name:1.0.0-SNAPSHOT 确实有自己的POM,它列出了以下依赖项:
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>xsoup</artifactId>
<version>0.2.0</version>
<scope>compile</scope>
</dependency>
另外,我将cacheChangingModulesFor设置为0秒,因此,每次都会使用最新版本的SNAPSHOT jar。
我遇到的问题是“us.codecraft:xsoup:0.2.0”工件未包含在战争中,即使它是战争的传递依赖。
有什么想法?如果有任何不清楚的地方,请询问更多细节。
答案 0 :(得分:0)
好的,事实证明问题在于Gradle如何解决我的Web项目所依赖的快照工件。由于某些未知原因,在某些构建过程中,Gradle不会下载最新的jar,这会阻止它下载我在战争中需要的传递依赖,因为它不是这个旧jar的依赖。从我的仓库中删除旧的快照jar修复了这个问题。