问题标签 [gradle-task]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - 如何对gradle任务进行单元测试?
我想测试我的 build.gradle 脚本的逻辑。
脚本的摘录将是:
我想测试方法和任务本身。
“prepareProject”任务的执行时间相当长,但在“真实”设置中,不仅需要设置上述任务所需的属性,而且还需要设置属性。
对于测试,我只想设置运行 readFiles 任务并验证结果,确保项目上的任一属性设置正确或引发异常。
我已经研究过 gradle 测试套件,但这不是我需要的,因为我找不到任何可以让我检查项目的东西。
我已经看过Guide for Testing Gradle Scripts,但是这篇文章已经很老了,并没有解决我的需求/问题。我也看过 gradle docs Testing Build Logic with TestKit,但看起来 GradleRunner 似乎并没有提供任何真正的检查或项目准备能力。
另外,它会让我们使用 jUnit,有效地添加整个类结构,仅用于测试目的。不干净且难以维护。谷歌搜索 gradle + test + task 和其他变体可以找到大量运行 xUnit 测试的方法,但这不是我在这里需要的。
总结一下,我需要的是:
- 单独测试来自 build.gradle 的 gradle 任务和方法(测试工具包将运行任务及其所有依赖项,我不想要这个)
- 在测试运行之前准备项目(测试套件似乎不允许这样做)
- 验证任务/方法输出
有没有人成功做到这一点?
还是我以错误的方式处理这个问题?
我对 gradle 还很陌生,正在寻找好的选项来测试我的构建脚本。
gradle - 在子项目中运行 gradle 任务
我有一个像这样的多项目构建
设置.gradle
现在在examples
项目build.gradle
中,我已经为所有子项目声明了一个任务,如下所示:
当我运行时gradle tasks --all
,我得到类似于以下的输出(以及其他):
现在我尝试simple-project
像这样运行该任务
我得到的输出是:
FAILURE:构建失败并出现异常。
出了什么问题:在项目“:示例:简单项目”中找不到任务“你好”。一些候选人是:“帮助”。
尝试:运行 gradle 任务以获取可用任务列表。使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。
在https://help.gradle.org获得更多帮助
0 秒内构建失败
我究竟做错了什么?在子项目中运行任务的正确方法是什么?
编辑
如果我改为运行它
然后这也运行子项目任务(hello
)
> 任务 :examples:simple-aspect-project:hello
简单方面项目:我是一个例子
我不想要这个。我希望能够为我想要的子项目运行任务,而不是一次全部运行。
gradle - Gradle Copy 任务始终是最新的
我已经多次看到这个问题,但我还没有找到与我的特定用例相匹配的答案。
在迭代包含环境属性的配置文件之后,我从模板创建了一堆配置文件。
问题是,如果我用一些新值修改 src/properties/ENV.gradle,当我基于它已经是“UP-TO-DATE”来调用任务时,它会被忽略。我没有使用 doFirst 或 doLast,这是发生这种情况的常见原因之一。
到目前为止,我的解决方法是包括
无论 Gradle 计算什么,它都会强制每次重新创建配置文件,但感觉就像一个可怕的 hack。有没有更好的办法?
这是代码:
解决方案: 我的情况有点具体,因为我希望复制任务注意到“配置”的变化,而没有告诉它明确关心它(见下面接受的答案)。这是解决问题的更改:
第一个参数(用引号引起来)是该属性的名称,第二个是实际值。
现在,当我更改 ENV.gradle 文件中的属性并运行“gradle -i”时,我看到:
gradle - Gradle 中测试和检查任务的区别
我build.gradle
的如下:
在 Gradle 中./gradlew tasks
我收到
这两个任务有什么区别?的输出与./gradlew check
相同./gradlew test
。
据我了解,./gradle test
⊆ ./gradle check
。这个对吗?
spring-boot - 为什么我需要在构建之前手动运行 clean?
这是我的配置
应用程序.yml
构建.gradle
如果我运行这一切正常
但是如果我运行它,“env”道具会保留在第一个配置中
奇怪的是,如果我clean { println "CLEAN" }
看到每次都使用所有 4 个命令调用 clean
gradle - 在多项目构建中依赖多个 gradle 任务
目前我有启动谷歌云服务器、运行测试和停止服务器的任务。它在根项目中定义:
我尝试了多种方法来编写这样的东西,只有一个任务。我没有得到如何从另一个项目中引用任务并在其上调用 mustRunAfter 。这不起作用(我也尝试从 Project.tasks.getByPath、root.tasks 等中引用):
可能吗?什么是使这项工作的正确语法?
maven-plugin - 如何将“纱线运行脚本构建”任务从前端 maven 插件迁移到 gradle?
我使用 gradle-node-plugin 而不是 frontend-maven-plugin。
maven中的“yarn run-script build”任务编写如下
在 gradle 中,我写了 yarnScriptBuild 任务
如果我执行“./gradlew yarnScriptBuild”命令,
我会收到错误“输出路径不能是项目根目录!”
然后我插入outputs.dir = ("$buildDir/classes")
到 yarnScriptBuild,但它没有用。
(几天前我发现页面“$buildDir 表示 {root directory}/build”)
我收到另一个错误“No such property: dir for class: org.gradle.api.internal.tasks.DefaultTaskOutputs”
这是否意味着“dir”属性不存在?
我应该怎么做?什么不见了?
如果信息不足,请告诉我。
谢谢你。
gradle - Gradle:使用任务的成员作为其他任务的输入
setVersionTask 设置一个我想被 getVersionTask 用作输入的成员。这是我的代码:
我去的时候
./gradlew -q 获取版本
我明白了
发现任务 ':getVersionTask' 的配置有问题。没有为属性“版本”指定值。
我该如何做到这一点?
非常感谢!
http - Gradle HTTP 插件
我需要在 gradle build 中使用 HTTP post 上传文件。我找到了可以达成交易的HTTPPlugin。我做了一个简单的构建,但它给了我错误:
构建.gradle
似乎 gradle 找不到 HTTPTask。知道我错过了什么吗?