问题标签 [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.
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”也没有效果。
gradle - 在 gradle ssh 插件中参考 spring-boot 组装的 jar
我想在 gradle 中创建一个自定义任务,它将组装好的 jar 上传到远程服务器。
我最好的工作结果是
但是,这使用了 jar.baseName 属性,该属性已被弃用并发出警告:
baseName 属性已被弃用。这计划在 Gradle 7.0 中删除。请改用 archiveBaseName 属性。
替换它的正确方法是什么?
建议的 archiveBaseName 不起作用,例如
输出
任务':myproject:jar'属性'archiveBaseName'-1.0.12.jar
spring - 如何在 Spring 中创建一个 Gradle 任务以仅运行特定的测试
我有一个 Spring 项目,我在其中编写了一些单元和集成测试。现在我想创建自定义任务来运行所有单元测试、所有集成测试和一个运行两者的任务。但是我该怎么做呢?
android - Android Gradle - 如何在应用安装后运行任务
通过 Gradle 安装应用程序后,我需要将一些文件复制到 Android 应用程序文件夹 (data/data/...)。这必须在应用程序启动之前的每个调试版本中完成,因此我假设我可以找到一个可以在安装之后(但在运行命令之前)执行的 gradle 任务。
在执行类似
然后它们在我的构建任务执行之前被执行。但是,由于我需要在安装过程之后(以及在应用程序运行之前)发生这种情况,所以我希望得到这样的结果:
但遗憾的是,这不起作用。
在构建输出中,我可以看到它在开始时几乎执行了。
看起来任务没有在预期的时间执行。我需要的是这样的:
- 任务构建
- 任务安装
- 任务 XYZ
- 任务运行应用
但我怎样才能做到这一点?
像这样的解决方案 Android 在应用安装后运行 Gradle 任务 似乎不适用于安装任务。
- - - 编辑 - - -
我以相反的方式尝试了它 - 而不是使用 gradle 任务 - 我尝试通过在“启动前”设置中添加“外部工具”调用来更改 AS 的运行配置。
https://developer.android.com/studio/run/rundebugconfig#definingbefore
但是,当在那里选择一个 shell 脚本时,它不会被执行(例如,我在那个脚本中创建了一个文件或目录,所以我可以看到它是否被执行了)。似乎不是那个 error=13 权限问题。因此,如果 gradle 任务不是解决方案,也许任何人都知道使用此选项的解决方案!
gradle - Gradle:如何为指定的输入文件运行任务?
我有一个使用 ProtoBuffer 插件并运行一些任务的 Gradle 构建文件。在某些时候,某些任务会针对某些文件运行,这些文件是任务的输入。
我想修改作为这些任务输入的文件集。说,我希望使用列出的文件运行任务,每行一个,在特定文件中。我怎样才能做到这一点?
编辑:这是相当大的 build.gradle 的一部分,它提供了一些上下文。
问题是,如何修改现有任务的输入文件集(已经对它们做了一些事情),而不是如何创建新任务。
编辑 2:根据如何修改 Gradle 复制任务中的文件列表?,一般来说这是一个坏主意,因为 Gradle 对输入和输出依赖项做出假设,这种方法可以打破这种假设。
reactjs - Gradle Jar 创建任务卡住了
我是新手。在 intelliJ 中运行 gradle build 任务时,我的任务一直在无限运行并且从未完成。任务写如下:
谁能帮我指出我在这里做错了什么?
更新:当我按如下方式编写任务时,它成功完成:
谢谢,
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 知道正确的依赖关系,它就像一个魅力!
gradle - 第一次运行和已经运行一次时,Gradle 任务的 `outputFiles` 怎么可能不同?
当我运行以下build.gradle.kts
脚本时,第一次调用目标downloadAndUnzipFile
时,当我使用干净的构建目录运行时,出现错误。
如果我立即重新运行相同的任务,我现在就成功了
这是预期的,还是一个错误?如果它是一个错误,那么在哪里?在我的剧本中?
我的build.gradle.kts
长相是这样的
gradle - 从脚本返回的 Gradle 导出环境
我正在尝试编写执行以下操作的 gradle 任务:
- 执行脚本获取一些数据(假设里面有 curl)
- 使用此数据设置环境变量。
我想设置这个环境变量,以便其他 gradle 任务可以使用它进行进一步处理。
我的代码如下所示:
但是,在执行时,我在控制台中看到我的所有 env 变量都被打印(export KEY=VALUE)并且 System.getenv("myVar") 打印为 null。
我究竟做错了什么?也许有更好的方法来实现我的目标?