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

标签 java gradle

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

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

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

如果我遗漏了提供答案所需的一些信息,请告诉我,我很乐意为您补充。

最佳答案

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

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

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

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

那么最新的 Gradle 系统应该可以解决这个问题,即仅当 JavaCompile 任务是最新的时才运行 Test 任务。

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

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

关于java - 如何从 CLI 将 Gradle 任务拆分为纯编译和纯执行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59660329/

相关文章:

java - 什么事件会使等待线程执行另一个线程已经运行的同步方法?

java - 当正则表达式与较大的字符串匹配时获取子匹配

android - Gradle 应用程序变体 mergeAssets 不工作

android - 在 Android Studio 中加载插件时发现问题

android - 无法将库项目导入 Android Studio "Main Manifest Missing"

java - 如何制作改变应用程序语言的微调器(在 fragment 中)?

java - "Redundant"javadoc - 在面向公众的 API 中是否理想?

java - 如何关闭与 Active Directory 的 LDAP 连接

eclipse - Eclipse/LibGDX无法加载工具扩展->粒子效果

Android Gradle 为什么我们需要 "allprojects"?