无法为 gradle 任务设置类型 shadowJar
Posted
技术标签:
【中文标题】无法为 gradle 任务设置类型 shadowJar【英文标题】:unable to set type shadowJar for gradle task 【发布时间】:2017-10-14 11:18:31 【问题描述】:我正在使用 gradle v3.4 和 shadowjar v1.2.4。我添加了以下任务,但执行此操作时在下面复制了一个错误。我添加了一个 ShadowJar 类型的任务,以便能够从同一个项目中生成不同的 jar 文件。
Shadowjar 在此任务范围之外对我来说效果很好。
分级
task someJar(type: ShadowJar)
group = "shadow"
description = "some executable jar"
mainClassName = 'com.some.client.SomeClient'
main = 'com.some.client.SomeClient'
manifest.attributes 'Main-Class': 'com.some.client.SomeClient'
classifier = 'someClient'
from(project.convention.getPlugin(JavaPluginConvention).sourceSets.main.output)
configurations = [project.configurations.runtime]
exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA')
使用堆栈跟踪时出错
Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'ShadowJar' for root project 'someporject' of type org.gradle.api.Project.
at org.gradle.internal.metaobject.AbstractDynamicObject.getMissingProperty(AbstractDynamicObject.java:85)
at org.gradle.groovy.scripts.BasicScript.getProperty(BasicScript.java:81)
at build_2cp7m6fw08pxyu0f84a6pva88.run(/Users/continue/git/iso20022/build.gradle:202)
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
【问题讨论】:
github.com/johnrengelman/shadow/issues/… 【参考方案1】:将类型指定为 com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar 而不是 ShadowJar 为我解决了这个问题。
task someJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar)
【讨论】:
替代地使用导入 - 它在 Java 中的工作方式相同!【参考方案2】:这也可以:
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
task someJar(type: ShadowJar)
// ...
【讨论】:
以上是关于无法为 gradle 任务设置类型 shadowJar的主要内容,如果未能解决你的问题,请参考以下文章
android studio 异常:Gradle 任务 assembleDebug 失败,退出代码为 1
Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ① ( Maven 仓库上传源码上传源码设置 | 自定义源码打包任务 | 自定义文档打包任务 )