Gradle 从构建所需的ZIP依赖项中提取文件的最佳方法
我们的构建需要存储在Maven存储库中的几个特殊依赖项,这些依赖项不是简单的Java库,例如包含要包含在webapp中的JavaScript/CSS组件的Zip文件,或者执行各种任务的命令行构建工具。在某些情况下,对于这个构建,我只需要一小部分原本很大的zip归档文件 最初的解决方案是只使用一个“type:Copy”任务,但我发现对于较大的归档文件,在“配置”阶段会添加几秒钟,在初始构建完成所有工作后,再添加几秒钟执行最新检查 Gradle有更好的方法来处理这种依赖关系吗?我一点也不确定配置的困难是什么,我猜最新的检查会遍历文件树并检查每个文件,我并不真正需要这些文件,zip或输出目录也不会被构建修改。Gradle应该已经知道它是否碰巧从回购协议获得了更新的依赖关系Gradle 从构建所需的ZIP依赖项中提取文件的最佳方法,gradle,dependency-management,Gradle,Dependency Management,我们的构建需要存储在Maven存储库中的几个特殊依赖项,这些依赖项不是简单的Java库,例如包含要包含在webapp中的JavaScript/CSS组件的Zip文件,或者执行各种任务的命令行构建工具。在某些情况下,对于这个构建,我只需要一小部分原本很大的zip归档文件 最初的解决方案是只使用一个“type:Copy”任务,但我发现对于较大的归档文件,在“配置”阶段会添加几秒钟,在初始构建完成所有工作后,再添加几秒钟执行最新检查 Gradle有更好的方法来处理这种依赖关系吗?我一点也不确定配置的困
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/**/*"
}
相反,它做得很好。