gpt4 book ai didi

gradle - Gradle:无法在doFirst block 中运行zipTree

转载 作者:行者123 更新时间:2023-12-03 05:13:17 26 4
gpt4 key购买 nike

我正在尝试在doFirst块中爆炸一些jar文件,如下所示-

task copyBinaries(type: Copy){

def Jar1 = ""
def Jar2 = ""
def Jar3 = ""
doFirst {
Jar1 = configurations.Lib1.singleFile
Jar2 = configurations.Lib2.singleFile
Jar3 = configurations.Lib3.singleFile
}

inputs.files configurations.Lib1
inputs.files configurations.Lib2
inputs.files configurations.Lib3

from(zipTree(file(Jar1))) {
into('jar_folder1')
}
from(zipTree(file(Jar2))) {
into('jar_folder2')
}
from(zipTree(file(Jar3))) {
into('jar_folder3')
}
into('build/libs/')
}
}

为了避免在配置阶段解决依赖关系,我从doFirst块的配置中提取文件名。问题在于,由于复制任务在配置阶段需要复制的源和目标,因此gradle会将Jar1,Jar2,Jar3视为空字符串,并引发错误。
我正在寻找一种方法,让复制任务在执行阶段(执行doFirst块之后)接收参数(源文件)。

我该如何解决这种情况?谢谢。

最佳答案

我遇到过类似的情况,我必须从作为另一个输出创建的路径进行复制。
我通过在任务的doLast块中声明复制逻辑来解决此问题:

task copyStuff {
doLast {
copy {
from zipTree('path/to/archive')
into 'destination/dir'
}
}
}

您只需要确保您的任务在例如使用dependsOn创建所需输出的任务之后运行即可。

关于gradle - Gradle:无法在doFirst block 中运行zipTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39444471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com