【问题标题】:Calling Gradle task for only one subproject只为一个子项目调用 Gradle 任务
【发布时间】:2018-05-10 02:28:34
【问题描述】:

如何为 Gradle 配置子项目并仅从 build.gradle 为我正在执行任务的当前目录运行 Gradle 任务?

例如,假设我在父文件夹中有两个项目:

  • root-project
    • project-1
    • project-2
  • build.gradle
  • settings.gradle

settings.gradle 文件中包含项目 1 和 2:

include(
    'project-1',
    'project-2'
)

我在build.gradle 文件中配置了一个我想调用的任务。我已将任务嵌套在 subprojects{} 块中:

subprojects {
    ...
    task check(type: JavaExec) {
        main = MAIN_CLASS
        classpath = sourceSets.main.runtimeClasspath
    }
    ...
}

但是,build.gradle 以这种方式为所有子项目运行。

如何定义所有可能的子项目,但只为我正在执行的当前项目调用 Gradle 任务(即,避免为所有子项目调用任务)?我想只使用当前任务名称(例如,gradle check)。

【问题讨论】:

    标签: gradle build.gradle


    【解决方案1】:

    无法使用gradle check 在单个项目中调用任务。

    你有两个选择:

    • 利用 Gradle 建议的模型,其中任务可以在多项目构建中以项目名称为前缀,从而无需导航到子项目。
      • 这意味着调用gradle :project-1:checkgradle :project-2:check,具体取决于您要运行的任务。
    • 将任务定义为在每个子项目中具有不同的名称。 See task rules 关于如何使用动态名称定义任务。
      • 这意味着调用gradle check1gradle check2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      相关资源
      最近更新 更多