【发布时间】:2014-04-23 05:18:43
【问题描述】:
我有一个产生战争的网络项目。战争添加了一个 jar(我在外部 repo 上发布的另一个项目)作为编译依赖项。这个 jar 有它自己的编译依赖,它列在 jar 的 pom 文件中,以及项目的构建脚本中(这是一个 Gradle 项目)。我想将 jar 以及它自己的所有依赖项添加到我的战争的 WEB-INF/lib 文件夹中。但是,当我使用 Gradle 构建 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' 工件没有包含在战争中,即使它是战争的传递依赖项。
有什么想法吗?如果有不清楚的地方,请询问更多细节。
【问题讨论】:
-
构建或存储库内容可能有问题,但从远处很难说它是什么。
changing = true是快照依赖项的默认值。transitive = true也是默认值。如果传递依赖使其进入compile配置,它也将进入战争。也许检查gradle dependencies --configuration compile的输出,并尝试使用--refresh-dependencies构建。 -
再次感谢 Peter,感谢您在 forums.gradle.org 上对同一问题的支持
标签: gradle war transitive-dependency