我正在使用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名称。
答案 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}
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")
}