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

Gradle 如何更改使用shadowjar创建的jar的名称,gradle,jar,build,Gradle,Jar,Build,我正在使用shadowJar插件构建/创建我的fatJar。在我的身体里,格雷德尔,我有这个 shadowJar{ mergeServiceFiles('META-INF/spring.*') exclude "META-INF/*.SF" exclude "META-INF/*.DSA" exclude "META-INF/*.RSA" exclude "META-INF/LICENSE" } 使用gradle shadowJar创建我的胖罐子。但是,创建的胖jar的名称是sample-SN

我正在使用shadowJar插件构建/创建我的fatJar。在我的身体里,格雷德尔,我有这个

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

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

ShadowJar插件提供了一个Jar任务扩展。使用属性对其进行配置,例如:

shadowJar{
    mergeServiceFiles('META-INF/spring.*')
    exclude "META-INF/*.SF"
    exclude "META-INF/*.DSA"
    exclude "META-INF/*.RSA"
    exclude "META-INF/LICENSE"
    archiveFileName = "sample-${classifier}-ns.r100-deploy.${extension}"
}
您可以使用占位符,如
${baseName}
${appendix}
${version}
${classifier}
${extension}


请注意,从ShadowJar版本4开始,
archiveName
现在是
archiveFileName

您似乎只想将
-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'
}

对于希望了解如何使用Kotlin DSL实现这一点的人,请执行以下操作:

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

除了Richards answer,我还想通过使用kotlin DSL执行以下操作来配置任务:

tasks {
    val shadowJar by getting(ShadowJar::class) {
        archiveFileName.set("${project.name}-${project.version}-foo.jar")
    }
}

影子插件的默认值是
archiveName=“${baseName}-${version}-${classifier}.${extension}”
@mernst我的build.gradle文件中的命令抛出错误
无法获取根项目的未知属性“baseName”