gpt4 book ai didi

gradle - 如何在包装器任务中设置分发类型

转载 作者:行者123 更新时间:2023-12-02 23:54:07 25 4
gpt4 key购买 nike

这看起来应该很简单,但我就是无法让它工作。我正在尝试设置包装器任务的 distributionType 属性,但它不起作用:

task wrapper(type: Wrapper) {
gradleVersion = '4.1'
distributionType = DistributionType.ALL
}

当我尝试运行包装器任务时,出现以下错误:

$ gradle wrapper

FAILURE: Build failed with an exception.

* Where:
Build file '.../build.gradle' line: 6

* What went wrong:
A problem occurred evaluating root project 'project'.
> Could not get unknown property 'DistributionType' for task ':wrapper' of type org.gradle.api.tasks.wrapper.Wrapper.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 0.613 secs

请注意,我已经下载了最新的 Gradle 版本 (4.1) 并将其添加到我的 bash 路径中:

$ gradle -version

------------------------------------------------------------
Gradle 4.1
------------------------------------------------------------

Build time: 2017-08-07 14:38:48 UTC
Revision: 941559e020f6c357ebb08d5c67acdb858a3defc2

Groovy: 2.4.11
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_144 (Oracle Corporation 25.144-b01)
OS: Mac OS X 10.12.6 x86_64

我尝试设置它的方式似乎是合理的,因为它与我设置 gradleVersion 的方式相同,并且考虑到 Wrapper.java 的实现:

public class Wrapper extends DefaultTask {

public enum DistributionType {
/**
* binary-only Gradle distribution without sources and documentation
*/
BIN,
/**
* complete Gradle distribution with binaries, sources and documentation
*/
ALL
}

//...

public void setGradleVersion(String gradleVersion) {
this.gradleVersion = GradleVersion.version(gradleVersion);
}

// ...

public void setDistributionType(DistributionType distributionType) {
this.distributionType = distributionType;
}

// ...

}

我已经看到了这个解决方法(如 this StackOverflow 答案中所述),它有效,但感觉有点太老套了......

task wrapper(type: Wrapper) {
gradleVersion = '2.13'
distributionUrl = distributionUrl.replace("bin", "all")
}

我做错了什么?

我还使用 --stacktrace --debug 重新运行。我不会发布整个输出(相当大),而是发布看起来最相关的部分:

> Could not get unknown property 'DistributionType' for task ':wrapper' of type org.gradle.api.tasks.wrapper.Wrapper.

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'slackscheduler'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:176)
at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
// many, many lines omitted
Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'DistributionType' for task ':wrapper' of type org.gradle.api.tasks.wrapper.Wrapper.
at org.gradle.internal.metaobject.AbstractDynamicObject.getMissingProperty(AbstractDynamicObject.java:85)
at org.gradle.internal.metaobject.ConfigureDelegate.getProperty(ConfigureDelegate.java:134)
at build_90tinl1ipqqsdzvv3o3xs2adt$_run_closure1.doCall(/Users/justinrogers/Development/slack-scheduler/build.gradle:6)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:70)

最终,这表明我们失败了 here .

最佳答案

我的猜测是:

ConfigureUtil helper 将解析策略设置为 Closure.OWNER_ONLY。在 build.gradle 中,您无权访问 DistributionType 枚举。如果您在执行任务之前导入此枚举:

import org.gradle.api.tasks.wrapper.Wrapper.DistributionType

一切都会好起来的。另一种解决方案是分配

distributionType = Wrapper.DistributionType.ALL

关于gradle - 如何在包装器任务中设置分发类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45665400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com