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

Ank*_*arg 16 jar build gradle

我正在使用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"
}
Run Code Online (Sandbox Code Playgroud)

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

Sta*_*lav 23

因为,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}"
}
Run Code Online (Sandbox Code Playgroud)

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

  • archiveName已过时;使用archiveFileName (3认同)
  • Shadow 插件默认为 `archiveName = "${baseName}-${version}-${classifier}.${extension}"` (2认同)

Ric*_*ard 10

对于想要如何使用 Kotlin DSL 执行此操作的人来说,可以这样:

tasks.withType<ShadowJar> {
   archiveFileName.set("${archiveBaseName}-${archiveVersion}-${archiveClassifier}.${archiveExtension}")
}
Run Code Online (Sandbox Code Playgroud)