从构建所需的ZIP依赖项中提取文件的最佳方法

时间:2015-10-07 09:43:55

标签: gradle dependency-management

我们的构建需要存储在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/**/*"
}

0 个答案:

没有答案