使用Gradle解压缩时如何展平目录结构?

opt*_*lic 9 gradle

我想从战争中提取一些罐子作为我的gradle(2.0)构建的一部分.到目前为止我有这个:

task unzip(type: Copy) {
    def zipFile = file('D:/external/dependent.war')
    def outputDir = file('lib')

    from zipTree(zipFile)
    into outputDir
    include 'WEB-INF/lib/*.jar'
}
Run Code Online (Sandbox Code Playgroud)

这将WEB-INF/lib目录放在outputDir中.我只想把罐子弄平.

要在Ant中执行此操作,我会这样做:

  <target name="unzip">
    <unzip src="D:/external/dependent.war" dest="lib">
        <patternset>
            <include name="WEB-INF/lib/*.jar"/>
        </patternset>
        <mapper type="flatten"/>
    </unzip>
  </target>
Run Code Online (Sandbox Code Playgroud)

我如何在gradle中完成?

al.*_*al. 6

相信您可以简单地附加.files到您的zipTree

task unzip(type: Copy) {
    def zipFile = file('D:/external/dependent.war')
    def outputDir = file('lib')

    from zipTree(zipFile).files
    into outputDir
    include 'WEB-INF/lib/*.jar'
}
Run Code Online (Sandbox Code Playgroud)


Ang*_*ior 6

我尝试了 Al J 的答案,但它不适用于包含。

这对我有用:

task unzip(type: Copy) {
    def zipFile = file('D:/external/dependent.war')
    def outputDir = file('lib')

    from zipTree(zipFile).matching{include 'WEB-INF/lib/*.jar'}.files
    into outputDir
}
Run Code Online (Sandbox Code Playgroud)