Gradle java-library-distribution自定义zip名称和zip中的jar位置

时间:2014-03-24 17:02:01

标签: gradle

我正在查看java-library-distribution插件,它几乎可以完成我想要的一切,但是,我有一些问题。

  • 我想控制输出zip文件的名称,使其成为 group-module-version-bin.zip而不是group-module-version.zip,I 可以控制第一位,但我似乎无法添加 bin到生成的名称。

  • 而不是将项目jar拉到生成的zip的顶层我 希望将它与依赖项

  • 一起放在libs目录中
  • 我想提取一些资源,但我的项目已经存在。一世 想要尝试避免重构文件位置。如果我 把文件放在src / main / dist中,它们就是我想要的, 但如果我在发行版中指定内容 - >主要是他们被放入了顶级 拉链。我尝试使用内容 - >从这似乎 导致所有内容进入包含libs和jar的子目录。

我想我可以编写自己的zip任务,但如果能让它工作,我会更早地使用现有的插件。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我已设法使用以下代码解决第二和第三部分。基本上我查看了java-library-distributions代码,并使用分发插件进行了讽刺。

distributions {
    main {
        contents {
            into('resources/config') {
                from { 'bin/config' }
            }
            into('resources/img') {
                from { 'bin/img' }
            }
            into('lib') {
                from(jar)
            }
            from { 'bin/xxx.bat' }
        }
    }
}

但是关于输出文件名的问题仍然存在。

答案 1 :(得分:0)

使用baseName属性,您可以控制输出文件的名称:

distributions {
    main {
        contents {
            baseName = "Test-${project.getProperty('group')}-${project.getProperty('version')}-bin"

但是,版本总是附加在最后,这给出了以下结果: 建立/分布/试验组-4.4.0-SNAPSHOT彬4.4.0-SNAPSHOT.tar

如果您可以将“bin”部分移动到名称中的其他位置,则可以使用此功能。

答案 2 :(得分:0)

' -bin'名称末尾的部分称为"分类器" (这是一个Maven术语)。您可以在build.gradle的artifacts部分中设置它:

artifacts { yourConfigurationName distZip { classifier = 'bin' } }

代码'工件'和' distZip'完全如图所示。 更改“您的配置名称”'以及将此包放入的任何配置的名称(由build.gradle的'配置{yourConfigurationName}部分定义),将其上载到存储库时。

这将产生一个group-module-1.2.3-SNAPSHOT-bin.zip

这对我来说已经工作了几个小时。我发布到Artifactory,但我认为它应该适用于任何类型的上传。