gradle - 如何在 Gradle 中为 `@OutputDirectory` 任务指定 `Exec`?

标签 gradle

我有以下内容:

task cloneProtobuf(type: Exec) {
  workingDir "${rootProject.buildDir}/github.com/google"
  commandLine 'git', 'clone', 'https://github.com/google/protobuf.git'

  enabled = { -> !new File(workingDir, "protobuf/.git").isDirectory() }()
  doFirst {
    mkdir workingDir
  }
}

我宁愿让 gradle 考虑如果 protobuf 目录已存在,该任务是最新。如何做到这一点?

最佳答案

请注册一个任务 output,而不是启用/禁用任务,那么 gradle 会意识到任务是否是最新的。请查看下面的示例,它会对您有所帮助:

task mk(type: Exec) {
  def output = project.file('mk')
  outputs.dir output
  commandLine 'mkdir', output
  workingDir '.'
}

如果运行gradle mk两次,该任务将只执行一次。

关于gradle - 如何在 Gradle 中为 `@OutputDirectory` 任务指定 `Exec`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43501684/

相关文章:

dependencies - gradle 对另一个非子项目的依赖

android - 更新 android studio 和构建工具后,找不到与 android 中给定名称错误匹配的资源

java - Gradle:单个进程中的 JavaExec

android - 在APK META-INF/maven/com.squareup/otto/pom.xml中复制的重复文件

eclipse - Gradle Cargo 插件,不登录 Eclipse 控制台

android - 如何配置 build.gradle 以使用 Google Play 应用签名上传证书

android - 无法在Android Studio 2.2预览版上构建和运行应用

java - 错误:(1,0)类别com/android/repository/api/Downloader中的方法哈希具有非法修饰符:0x9

eclipse - 通过 UI 将 Sources.jar 存档部署到 Artifactory

android - Android Studio Gradle构建失败(无法找到目标)