我有一个项目,该项目具有一个由shadow plugin提供的名为shadowDistTar
的任务。该任务的输出是tar文件。
我希望创建另一个Tar任务,它将输出的tar文件包含到一个新的tar文件中,该文件包含第一个tar文件和一些新文件。但是,我无法将tar文件包含在新文件中。
task("myNewTarTask", type: Tar) {
// configure the Tar task here...
project.afterEvaluate {
// we put things in afterEvaluate so the outputs of shadowDistTar are known
dependsOn shadowDistTar
shadowDistTar.getOutputs().getFiles().each {
include it.toString()
}
}
}
我认为这里的问题是
include
应该采用ANT样式的include规范,该规范应该相对于Tar任务的源目录,而不是绝对路径,这是我从getOutputs()
获得的。我如何才能将输出作为ANT样式包含,或以其他方式将由shadowDistTar
创建的tar文件包含到第二个tar中,而不必求助于将路径硬编码到include中? 最佳答案
参见Project.tarTree(...)。例如:
task("myNewTarTask", type: Tar) {
dependsOn shadowDistTar
from tarTree(shadowDistTar.archiveFile)
from 'path/to/extra/files'
}