我们的构建需要存储在Maven存储库中的一些特殊依赖项,这些依赖项不是简单的Java库,例如包含要包含在webapp中的JavaScript / CSS组件的Zip文件,或者用于执行各种任务的命令行构建工具。在某些情况下,对于这个版本,我只需要一个小型zip存档的一小部分。
最初的解决方案是使用“类型:复制”任务,但我发现更大的存档几秒钟被添加到“配置”阶段,并再次执行几秒钟以进行最新检查在初始构建完成所有工作之后。
Gradle是否有更好的方法来处理这种依赖?我不确定配置难度是什么,我猜测最新的检查通过文件树检查每个文件,我真的不需要,zip或输出目录都没有被修改通过构建。并且Gradle应该已经知道它是否恰好从repo获得了更新的依赖关系?
ext {
barVersion = "1.0.9"
barBaseDir = "${buildDeps}/bar"
//Would ideally like to not deal with this, and extract "*.zip/*/" directly to
//"${buildDeps}/bar"
barDir = "${buildDeps}/bar/bar-${barVersion}"
}
configurations {
special
}
dependencies {
special "com.mycorp.foo:bar:${barVersion}@zip"
}
task extractBar(type:Copy) {
destinationDir = file barBaseDir
from zipTree(configurations.special.fileCollection{dep -> dep.name == 'bar'}.singleFile)
//Some times only need a small part for the actual build. The full package may either not be
//required for this build, or only at runtime on the end server
include "*/js/**/*"
include "*/sass/**/*"
include "*/schemas/**/*"
}