逐步构建-从下载的存档中解决依赖关系



我是Gradle的新手。我有一个多项目构建,它使用了项目中当前打包的一些依赖项(使用存储库和flatDir(,因为它们在artifactory中不可用。我想删除这个本地文件夹,下载几个保存这些依赖项的档案,解压缩它们,然后按常规进行构建。我将使用https://plugins.gradle.org/plugin/de.undercouch.download下载,但我不知道如何在任何依赖项解决之前做到这一点(理想情况下,如果还没有完成下载(。目前,据我所知,构建在配置阶段失败:

`A problem occurred configuring project ':sub-project-A'.
> Could not resolve all files for configuration ':sub-project-A:compileCopy'.
Could not find :<some-dependency>:.

编辑:下载文件有效。仍在努力解压缩档案:

task unzipBirt(dependsOn: downloadPackages, type: Copy) {
println 'Unpacking archiveA.zip'
from zipTree("${projectDir}/lib/archiveA.zip")     
include "ReportEngine/lib"
into "${projectDir}/new_libs"
}

如何在配置阶段运行此操作?

我最终在配置阶段中使用复制来强制解压缩

copy {
..
from zipTree(zipFile)
into outputDir
..  
}

请参阅Project.files(Object…(,其中说明

您可以将以下任何类型传递到此方法:

任务。已转换为任务的输出文件。如果将文件集合用作另一个任务的输入,则执行该任务。

所以你可以做:

task download(type: Download) {
... 
into "$buildDir/download" // I'm guessing the config here
}
task unzip {
dependsOn download
inputs.dir "$buildDir/download"
outputs.dir "$buildDir/unzip"
doLast {
// use project.copy here instead of Copy task to delay the zipTree(...)
copy {
from zipTree("$buildDir/download/archive.zip")
into "$buildDir/unzip"
}
}
}
task dependency1 {
dependsOn unzip
outputs.file "$buildDir/unzip/dependency1.jar" 
}
task dependency2 {
dependsOn unzip
outputs.file "$buildDir/unzip/dependency2.jar" 
}
dependencies {
compile files(dependency1)
testCompile files(dependency2) 
}

注意:如果拉链里有很多罐子,你可以做

['dependency1', 'dependency2', ..., 'dependencyN'].each {
tasks.create(it) {
dependsOn unzip
outputs.file "$buildDir/unzip/${it}.jar" 
}
}

相关内容

  • 没有找到相关文章

最新更新