问题标签 [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.

0 投票
1 回答
216 浏览

gradle - 让gradle在每次设置时执行一个finalizedBy任务(多次)

我使用以下情况遇到了问题:

为了连续运行不同的本机测试插件,我动态地创建了一些任务来为每个插件适当地准备环境,然后plugin_task 为每个托管依赖项的测试插件创建一个。

要在设备上开始测试,plugin_task 是finalizedBy connectedAndroidTest.

因此,例如调用gradle plugin_name_1工作正常,它准备环境并开始测试。

现在问题出现了,当我尝试运行allTests任务时:

然后,gradle 正确地对每个插件的所有动态创建的任务“prepare_dir”、“copy_files”进行操作,所有这些任务都被执行。

但是connectedAndroidTest只会在allTests的最后执行,所以只运行一次。但是我需要在每个plugin_task的每一端都执行这个任务。

gradle 的行为是正确的,因为它看到所有 plugin_tasks 都应由 connectedAndroidTest 完成,因此将其放在图表的末尾。

有没有可能让 gradle 多次执行这个任务?很高兴得到帮助。

将connectedAndroidTest任务包装成动态创建的任务并让 plugin_tasks 依赖它们,没有帮助。参数“rerun-tasks”也没有效果。

0 投票
1 回答
403 浏览

gradle - 在 gradle ssh 插件中参考 spring-boot 组装的 jar

我想在 gradle 中创建一个自定义任务,它将组装好的 jar 上传到远程服务器。

我最好的工作结果是

但是,这使用了 jar.baseName 属性,该属性已被弃用并发出警告:

baseName 属性已被弃用。这计划在 Gradle 7.0 中删除。请改用 archiveBaseName 属性。

替换它的正确方法是什么?

建议的 archiveBaseName 不起作用,例如

输出

任务':myproject:jar'属性'archiveBaseName'-1.0.12.jar

0 投票
1 回答
4646 浏览

spring - 如何在 Spring 中创建一个 Gradle 任务以仅运行特定的测试

我有一个 Spring 项目,我在其中编写了一些单元和集成测试。现在我想创建自定义任务来运行所有单元测试、所有集成测试和一个运行两者的任务。但是我该怎么做呢?

0 投票
1 回答
805 浏览

android - Android Gradle - 如何在应用安装后运行任务

通过 Gradle 安装应用程序后,我需要将一些文件复制到 Android 应用程序文件夹 (data/data/...)。这必须在应用程序启动之前的每个调试版本中完成,因此我假设我可以找到一个可以在安装之后(但在运行命令之前)执行的 gradle 任务。

在执行类似

然后它们在我的构建任务执行之前被执行。但是,由于我需要在安装过程之后(以及在应用程序运行之前)发生这种情况,所以我希望得到这样的结果:

但遗憾的是,这不起作用。

在构建输出中,我可以看到它在开始时几乎执行了。

看起来任务没有在预期的时间执行。我需要的是这样的:

  1. 任务构建
  2. 任务安装
  3. 任务 XYZ
  4. 任务运行应用

但我怎样才能做到这一点?

像这样的解决方案 Android 在应用安装后运行 Gradle 任务 似乎不适用于安装任务。

- - - 编辑 - - -

我以相反的方式尝试了它 - 而不是使用 gradle 任务 - 我尝试通过在“启动前”设置中添加“外部工具”调用来更改 AS 的运行配置。

https://developer.android.com/studio/run/rundebugconfig#definingbefore

但是,当在那里选择一个 shell 脚本时,它不会被执行(例如,我在那个脚本中创建了一个文件或目录,所以我可以看到它是否被执行了)。似乎不是那个 error=13 权限问题。因此,如果 gradle 任务不是解决方案,也许任何人都知道使用此选项的解决方案!

0 投票
1 回答
1022 浏览

gradle - Gradle:如何为指定的输入文件运行任务?

我有一个使用 ProtoBuffer 插件并运行一些任务的 Gradle 构建文件。在某些时候,某些任务会针对某些文件运行,这些文件是任务的输入。

我想修改作为这些任务输入的文件集。说,我希望使用列出的文件运行任务,每行一个,在特定文件中。我怎样才能做到这一点?

编辑:这是相当大的 build.gradle 的一部分,它提供了一些上下文。

问题是,如何修改现有任务的输入文件集(已经对它们做了一些事情),而不是如何创建新任务。

编辑 2:根据如何修改 Gradle 复制任务中的文件列表?,一般来说这是一个坏主意,因为 Gradle 对输入和输出依赖项做出假设,这种方法可以打破这种假设。

0 投票
0 回答
198 浏览

java - 如何在 Gradle 中实现“应用程序运行”任务?

我正在使用 Gradle,我想知道如何实现运行任务,以便可以从命令“./gradlew run”运行程序。我有一个名为“演示”的项目,它的任务是“应用程序运行”。然后我创建了项目“HouseObserver”,它没有任务“应用程序运行”。

在此处输入图像描述

我的 build.gradle 文件看起来像这样。

我也在尝试从插件中实现任务的方法。

但什么也没有发生。为什么?

编辑:

这是我最新的 gradle 文件。

0 投票
1 回答
102 浏览

reactjs - Gradle Jar 创建任务卡住了

我是新手。在 intelliJ 中运行 gradle build 任务时,我的任务一直在无限运行并且从未完成。任务写如下:

谁能帮我指出我在这里做错了什么?

更新:当我按如下方式编写任务时,它成功完成:

谢谢,

0 投票
1 回答
564 浏览

gradle - 如何使用自定义任务作为工件

projectA我在创建文件的项目(我们称之为)构建脚本中有一个简单的自定义任务。任务如下所示:

该项目是多项目构建的一部分,我需要此任务生成的文件作为projectB. 为了实现这一点,我在其中创建了一个配置projectB和一个相应的依赖项:

projectA我得到一个myDistConfig配置并希望使用createFile任务的输出文件作为这个配置的工件:

如果我这样做,gradle 会告诉我一个任务不能转换为ConfigurablePublishArtifact

所以我尝试createFile.outputs.files.singleFile作为神器。这会阻止 gradle 抱怨,但无法设置 and 之间的依赖关系:projectB:copySourceDependencies:projectA:createFile如果projectB:copySourceDependencies在干净的工作空间上执行,它会简单地跳过 status NO-SOURCE

是否有可能以某种方式使用自定义任务作为类似于 Zip 任务的工件,以使 gradle 了解依赖关系?!


2020-02-28 更新

基于@BjørnVester 的非常好的回答,我在一个单独的 gradle 文件中实现了以下任务util.gradle

在 projectA 中,build.gradle它看起来像这样:

现在 gradle 知道正确的依赖关系,它就像一个魅力!

0 投票
0 回答
104 浏览

gradle - 第一次运行和已经运行一次时,Gradle 任务的 `outputFiles` 怎么可能不同?

当我运行以下build.gradle.kts脚本时,第一次调用目标downloadAndUnzipFile时,当我使用干净的构建目录运行时,出现错误。

如果我立即重新运行相同的任务,我现在就成功了

这是预期的,还是一个错误?如果它是一个错误,那么在哪里?在我的剧本中?

我的build.gradle.kts长相是这样的

0 投票
1 回答
132 浏览

gradle - 从脚本返回的 Gradle 导出环境

我正在尝试编写执行以下操作的 gradle 任务:

  1. 执行脚本获取一些数据(假设里面有 curl)
  2. 使用此数据设置环境变量。

我想设置这个环境变量,以便其他 gradle 任务可以使用它进行进一步处理。

我的代码如下所示:

但是,在执行时,我在控制台中看到我的所有 env 变量都被打印(export KEY=VALUE)并且 System.getenv("myVar") 打印为 null。

我究竟做错了什么?也许有更好的方法来实现我的目标?