通常,我简单地定义项目依赖项:
dependencies {
compile project(':someProject')
}
这对于Java项目效果很好。但是,我有一个产生zip Artifact 的项目:
artifacts {
archives file: zipDistribution.archivePath, type: 'zip', builtBy: zipDistribution
}
而且,当我执行上面的依赖项定义时,在编译配置中的依赖项进行迭代时,没有得到zip Artifact 。有jar文件,但没有zip文件。但是,这将获得zip文件:
dependencies {
compile project(path: ':someProject', configuration: 'archives')
}
大!有用!除了“someProject”有其自己的依赖关系...而且我们不再传递那些。将
transitive: true
添加到项目依赖项也没有帮助。如何获得项目的zip Artifact 以及与其相关的传递依赖项?我可以添加两种依赖关系,但是我觉得必须在一种依赖关系定义中做到这一点。
最佳答案
archives
配置包含要上载的 Artifact ,但不包含任何依赖项。尝试以下方法:
dependencies {
runtime ...
}
artifacts {
runtime zipDistribution // assuming this is a `Zip` task
}
dependencies {
compile project(':someProject')
}
代替Java插件的
runtime
配置,前一个脚本还可以向自定义配置中添加依赖项和 Artifact ,然后必须将其反射(reflect)在项目依赖项(project(path: ..., configuration: ...)
)中。
关于gradle - 依赖项具有zip工件时的传递项目依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945988/