android - 刷新项目的 Gradle 任务

标签 android gradle groovy

我有几个模块包含在根项目中。一个模块具有 Gradle Task,可在文件夹中收集一些依赖项。

task myTask1 {
   // gathering all dependencies in a some folder
}

还有一个,使用从该文件夹生成的资源

task myTask2 {
   // using resource from some folder 
}

现在我想在根 Gradle 文件中创建主任务,它将调用模块中的第一个和第二个任务。

task myTask3(dependsOn: [':module1:myTask1', ':module2:myTask1']) {
    tasks.getByPath(':module2:myTask2').mustRunAfter ':module1:myTask1'
}

我看到每个任务的输出 好的。但是在 myTask2 的情况下,我在指定文件夹中没有任何资源,其中 myTask1 生成了依赖项。因此,在开始 myTask2 之前,我应该刷新项目(例如 Sync with File System 按钮)注意,从 Gradle Tasks View 中一个接一个地调用任务在 Idea 中工作完美。

最佳答案

如果您有这样的示例项目:

.
├── build.gradle
├── module1
│   ├── build.gradle
│   └── res
│       ├── file1.txt
│       └── file2.txt
├── module2
│   └── build.gradle
└── settings.gradle

module1 有一个复制任务:

task task1(type: Copy) {
  from "res"
  into "build/output"
}

然后您可以将任务 task2 添加到 module2,它的输入定义为 :module1:task1 的输出,如下所示:

task task2 {
  inputs.files tasks.getByPath(':module1:task1').outputs.files
  doLast {
    logger.lifecycle('hello')
  }
}

在根项目中,第一次运行 task2(使用普通控制台以便我们可以看到任务解析输出)时,您将获得:

$ gradle task2 --console plain
:module1:task1
:module2:task2
hello

BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed

所以你可以看到,它先运行了task1,然后运行了task2

如果我们再次运行它:

$ gradle task2 --console plain
:module1:task1 UP-TO-DATE
:module2:task2
hello

BUILD SUCCESSFUL in 0s
2 actionable tasks: 1 executed, 1 up-to-date

它仍然以正确的顺序运行 2 个任务,正如您所见,task1 没有工作,因为没有工作要做(module1/中的文件都没有) res 已更改)

这是你的意思吗?

关于android - 刷新项目的 Gradle 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49751039/

相关文章:

android - Xamarin 视频播放器组件在 Android 上拉伸(stretch)视频

android - 与其他 fragment 通信 - 为什么最佳实践改变了

java - 使用 gradle 的应用程序出现错误 "Native method not found"

json - JSON.registerObjectMarshaller在 Bootstrap 中不起作用

java - 使用 Groovy 中的 FileWriter 拼图

android - 打包自运行android模拟器

java - OnPostExecute 被跳过

android - java.util.zip.ZipException : duplicate entry: com/google/firebase/iid/zzb. 类

java - 找不到主要/资源中的类

grails - 如何使用 groovy 调用 Grails 中的服务