我正在尝试从一个zip文件中提取一个jar文件,该文件位于zip文件中,如下图所示。
<policies>
<inbound>
<log-to-eventhub logger-id ='contoso-logger'>
@( string.Join(",", DateTime.UtcNow, context.Deployment.ServiceName, context.RequestId, context.Request.IpAddress, context.Operation.Name) )
</log-to-eventhub>
</inbound>
<outbound>
</outbound>
</policies>
这是任务:-
test.zip /web-inf /lib /result1.jar
但是我正在使用具有task unzip(type: Copy){
group "testgroup"
def zipFile = file("$buildDir/test.zip")
def tree = zipTree(zipFile)
from(tree.matching { include "**/result1.jar"})
into "$builddir/dir"
includeEmptyDirs = false
}
之类的文件夹结构的jar文件。我只希望jar文件,而不是文件夹(/web-inf/lib/result1.jar
)。
请更正gradle任务中的错误。
答案 0 :(得分:0)
等级Copy
DSL提供了一种方法eachFile (Closure closure)
,您可以使用该方法对要复制/提取的每个文件执行操作,请参见Copy DSL
根据您的情况,您可以使用此方法重命名文件(从路径中删除父目录):
task unzip(type: Copy) {
group "testgroup"
from( zipTree(file("test.zip")).matching { include "**/result1.jar" } )
into "$buildDir/dir"
def parentDir = "web-inf/lib"
eachFile { fcp ->
fcp.path = fcp.path.replaceFirst("^$parentDir", '')
}
includeEmptyDirs = false
}