0

我有一个产生战争的网络项目。战争添加了一个 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' 工件没有包含在战争中,即使它是战争的传递依赖。

有什么想法吗?如果有任何不清楚的地方,请询问更多细节。

4

1 回答 1

0

好的,事实证明问题在于 Gradle 如何解决我的 Web 项目所依赖的快照工件。由于某种未知的原因,在某些构建期间,Gradle 不会下载最新的 jar,这阻止了它下载我在战争中需要的传递依赖,因为它不是这个旧 jar 的依赖。从我的仓库中删除旧的快照 jar 解决了这个问题。

于 2014-03-18T15:26:25.763 回答