如何将 Gradle 任务从 CLI 拆分为纯编译任务和纯执行任务?



我正在努力将自定义测试任务拆分为构建和测试阶段(我想使用 Java 8 构建源代码并使用 Java 11 运行它们而无需重新编译(。 任务定义在此处

使用-x test标志运行任务不会禁用测试。我希望能够从命令行完成所有操作,以便将任务作为 Jenkins 作业的一部分执行。

到目前为止,除了链接 5 个 bash 命令并将任务从--dry-run添加到./gradle命令,然后用-x排除它们之外,我未能提出解决方案,但我相信一定有一种更优雅的方法。

如果我错过了一些提供答案所需的信息,请告诉我,我很乐意填写您。

如果我理解正确,您正在寻找的正是 Java 插件对其默认任务所做的:

  • compileTestJava是负责编译测试的任务。
  • test是负责运行测试的任务,它表示对compileTestJava的依赖关系

因此,您将以相同的方式对任务进行建模:

  • 一个JavaCompile任务,配置了Java 8,用于编译测试。
  • 一个使用 Java 11 配置的Test任务来运行测试,并依赖于上一个任务。

然后,Gradle的最新系统应该可以解决问题,即仅在JavaCompile任务为最新时运行Test任务。

为了仅运行测试编译,您将只调用匹配任务。假设它正确定义了自己的依赖项,它将只执行所需的操作。

如果需要有关如何定义这些任务的更具体指导,请向问题添加更多信息。

最新更新