如何在 gradle 5+ 中为 shadowJar 插件指定归档分类器

Posted

技术标签:

【中文标题】如何在 gradle 5+ 中为 shadowJar 插件指定归档分类器【英文标题】:How to specify archive classifier for shadowJar plugin in gradle 5+ 【发布时间】:2019-09-20 19:31:28 【问题描述】:

从版本 5 开始 gradle changed Archive Tasks behavior

这打破了shadowJar 任务默认行为,不再创建<name>-<version>-all.jar 工件。

如何恢复此行为并创建*-all.jar

【问题讨论】:

【参考方案1】:

不要使用已弃用的classifierarchiveName 配置shadowJar 插件,方法如下:

shadowJar 
    archiveClassifier = 'all'

或者因为Gradle 5.1使用Property

shadowJar 
    archiveClassifier.set('all')

查看有关问题讨论的更多信息:

https://github.com/johnrengelman/shadow/issues/446#issuecomment-460328699 https://github.com/johnrengelman/shadow/issues/450

【讨论】:

Intellij 建议我不能将 archiveClassifier 设置为字符串(作为属性),而是使用 archiveClassifier.set('') 这是一个新的 Gradle API,具有 Property 值 (docs.gradle.org/current/javadoc/org/gradle/api/provider/…) 而不是旧的 String 自 5.1 版以来的新 Gradle DSL API:docs.gradle.org/5.1/…

以上是关于如何在 gradle 5+ 中为 shadowJar 插件指定归档分类器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 build.gradle 中为不同的 productFlavors 定义 android:label

如何在 Gradle 中为 OpenAPI 3.0 使用 Swagger Codegen?

我应该如何在 Gradle 中为 Spring Boot 应用程序设置主类?

如何在Android Studio中为Gradle设置apk的应用名称

如何在intelliJ IDEA中为我现有的Kotlin项目生成build.gradle文件

如何在Gradle中为单个测试类并行执行JUnit测试