2014-02-24 37 views
10

我想对由distZip任务创建的可分发zip归档文件使用特定的名称。我使用下面的代码gradle distZip重命名文件夹

distZip { 
     archiveName baseName+'-'+version+'-bin.zip' 
} 

生成的压缩文件包含'baseName +' - '+ version +' - bin'文件夹。

 

    jar -tvf baseName-version-bin.zip 
     0 Mon Feb 24 15:48:02 CST 2014 baseName-version-bin/ 
    81462 Mon Feb 24 15:48:02 CST 2014 baseName-version-bin/baseName-version.jar 
     0 Mon Feb 24 15:48:02 CST 2014 baseName-version-bin/lib/ 
    6329376 Fri Feb 07 09:37:28 CST 2014 baseName-version-bin/lib/a.jar 
    6329376 Fri Feb 07 09:37:28 CST 2014 baseName-version-bin/lib/b.jar 

所有的罐子放在这个目录里面。我只是想重命名档案,并不打扰它的内容。我期望在zip中没有'-bin'后缀的'baseName-version'目录。

如何单独更改档案的名称?

回答

1

我通过配置doLast来重命名构建的归档来实现它。

distZip { 
     doLast { 
      file("$destinationDir/$archiveName").renameTo("$destinationDir/"+baseName+'-'+version+'-bin.zip') 
     } 
    } 
6

可以按如下方式做到这一点:

distZip { 
    archiveName "$baseName-$version-bin.zip" 
} 

distributions { 
    main { 
     contents { 
      eachFile { 
       it.path = it.path.replace('-bin', '') 
      } 
     } 
    } 
} 

另一件事是,添加如-bin这样的后缀更好的方法(并与maven兼容)将使用分类器属性。我正在使用java-library-distribution插件,但我相信与分布插件它应该工作相同(考虑你也使用maven插件)。然后,它是足够的,你不喜欢它:

distZip { 
    classifier = 'bin' 
} 

distributions { 
    main { 
     baseName = archivesBaseName 
     contents { 
      eachFile { 
       it.path = it.path.replace("-$distZip.classifier", '') 
      } 
     } 
    } 
} 
0
apply plugin: 'application' 

当使用“应用程序”的插件,这是怎么改变的文件名。

distributions { 
    main { 
     baseName = "watch" 
     version = "" 
     contents { 
      from('.') { 
       include '*.yml' 
       into "bin" 
      } 
     } 
    } 
} 

这个生成的文件 'watch.tar' & 'watch.zip'