如何更改使用shadowjar创建的jar的名称

时间:2015-11-04 16:10:32

标签: gradle jar build

我正在使用shadowJar插件来构建/创建我的fatJar。在我的build.gradle中,我有这个

shadowJar{
mergeServiceFiles('META-INF/spring.*')
exclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
exclude "META-INF/LICENSE"
}

使用gradle shadowJar创建我的胖罐。但是,创建的胖罐的名称是样本-SNAPSHOT-ns.r100-all.jar。我想将其更改为sample-SNAPSHOT-ns.r100-deploy.jar。你如何使用ShadowJar覆盖jar名称。

5 个答案:

答案 0 :(得分:17)

因为,Shadow插件为Jar任务提供了扩展,您可以尝试通过archiveName属性进行配置。可以这样做:

shadowJar{
    mergeServiceFiles('META-INF/spring.*')
    exclude "META-INF/*.SF"
    exclude "META-INF/*.DSA"
    exclude "META-INF/*.RSA"
    exclude "META-INF/LICENSE"
    archiveName = "sample-${classifier}-ns.r100-deploy.${extension}"
}

注意,您可以使用占位符,例如${baseName}${appendix}${version}${classifier}${extension}

自v4起,

archiveName已弃用,请使用archiveFileName

答案 1 :(得分:3)

对于希望如何使用Kotlin DSL做到这一点的人来说,这是这样的:

tasks.withType<ShadowJar> {
   archiveFileName.set("${archiveBaseName}-${archiveVersion}-${archiveClassifier}.${archiveExtension}")
}

答案 2 :(得分:1)

您似乎只想将-all替换为-deploy,只需将分类器选项添加到shadowjar:

shadowJar{
  mergeServiceFiles('META-INF/spring.*')
  exclude "META-INF/*.SF"
  exclude "META-INF/*.DSA"
  exclude "META-INF/*.RSA"
  exclude "META-INF/LICENSE"
  archiveName = "sample-${classifier}-ns.r100-deploy.${extension}"
  classifier = 'deploy'
}

答案 3 :(得分:0)

除了理查兹的回答之外,我喜欢通过使用 kotlin DSL 执行以下操作来配置任务:

import kivy
from kivy import App
from kivy.uix.label import Label


class MyApp(App):
    def build(self):
        return Label(text="Hello world")


if __name__ == "__main__":
    MyApp().run()

答案 4 :(得分:0)

结合@richard 和@christian-dräger 的回答

final

输出格式为 tasks.withType<ShadowJar> { archiveFileName.set("${project.name}-${project.version}.jar") }