【问题标题】:How to execute a Gradle task before subprojects are evaluated如何在评估子项目之前执行 Gradle 任务
【发布时间】:2014-05-15 02:33:50
【问题描述】:

我已经设置了一个 Gradle 任务来自动生成我的 Gradle 构建的一个子项目,另一个依赖于它(这样做的原因:涉及 Apache Cordova 的长篇故事!)。因此根 build.gradle 包含创建“CordovaLib”子项目的自动生成任务。另一个子项目中的 build.gradle(不是自动生成的)依赖于 CordovaLib:

dependencies {
    compile project(':CordovaLib')
}

有没有办法在评估非生成子项目的 build.gradle 之前执行自动生成任务(特别是上面的行)?我在 JDK 1.7 上使用 Gradle 1.11,就目前的情况而言,我什至无法运行 gradle tasks 而不会因为缺少项目而失败。

【问题讨论】:

  • 在构建的配置阶段无法执行任务。为什么你认为这是必要的? “自动生成其中一个子项目”是什么意思?您必须提供更多详细信息。
  • 要为 Apache Cordova 制作 Android 插件,您需要使用 Cordova 生成一个 CordovaLib 项目,您可以依赖该项目来获取特定于 Cordova 的内容。我不想将这个自动生成的代码签入到源代码控制中,而是希望能够通过 Gradle 生成它。
  • 这并不能解释为什么生成需要在配置时发生(即“在评估子项目之前”)。为什么不能通过常规的 Gradle 任务来完成? “在评估子项目之前”到底是什么意思?
  • 嗯,因为我想在 Gradle 中设置插件项目以依赖于这个 CordovaLib 项目,这是一个愚蠢的想法吗?
  • 您必须更详细地解释(作为您问题的一部分)。

标签: java android cordova build gradle


【解决方案1】:

在评估构建文件之前不可能执行任务,至少不会没有复杂性,例如一个构建使用GradleBuild 任务执行另一个构建。您最好将生成的项目签入源代码管理,或者找到不涉及生成构建脚本的解决方案。

【讨论】:

    【解决方案2】:

    您可以使用 init 脚本来 gradle 来实现这一点。

    https://gradle.org/docs/current/userguide/init_scripts.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多