我在文档中找不到任务的输入和输出的任何提示。例如,我想知道是否可以跳过测试任务以及何时跳过。
最佳答案
我没有找到使用gradlew
的内置功能来做到这一点的方法。命令,但如果您愿意向 build.gradle
添加一些代码,则可以使用 Gradle 运行时 API文件。您可以添加用于获取任务并将其输入和输出打印到 gradle.projectsEvaluated
的逻辑。 block ,或在您专门为此目的运行的任务中。
例如,此代码(在 Groovy build.gradle
文件中)定义了一个任务 printInputsAndOutputs
这将打印 compileJava
的输入和输出任务:
tasks.register("printInputsAndOutputs") {
doLast {
Task task = tasks.getByPath(":app:compileJava")
TaskInputs inputs = task.inputs
println("compileJava has inputs? ${inputs.hasInputs}")
println("compileJava input files: ${inputs.files.asPath}")
println("compileJava hasSourceFiles? ${inputs.hasSourceFiles}")
println("compileJava input source files: ${inputs.sourceFiles.asPath}")
println()
TaskOutputs outputs = task.outputs
println("compileJava has output? ${outputs.hasOutput}")
println("compileJava output files: ${outputs.files.asPath}")
}
}
这是我在新的 gradle init
本地运行此命令时看到的输出编辑项目:
$ ./gradlew printInputs
> Task :app:printInputsAndOutputs
compileJava has inputs? true
compileJava input files: /home/mark/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-text/1.9/ba6ac8c2807490944a0a27f6f8e68fb5ed2e80e2/commons-text-1.9.jar:/home/mark/demo/utilities/build/classes/java/main:/home/mark/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.11/68e9a6adf7cf8eb7e9d31bbc554c7c75eeaac568/commons-lang3-3.11.jar:/home/mark/demo/list/build/classes/java/main:/home/mark/demo/app/src/main/java/demo/app/MessageUtils.java:/home/mark/demo/app/src/main/java/demo/app/App.java
compileJava hasSourceFiles? true
compileJava input source files: /home/mark/demo/app/src/main/java/demo/app/MessageUtils.java:/home/mark/demo/app/src/main/java/demo/app/App.java
compileJava has output? true
compileJava output files: /home/mark/demo/app/build/classes/java/main:/home/mark/demo/app/build/generated/sources/annotationProcessor/java/main:/home/mark/demo/app/build/generated/sources/headers/java/main:/home/mark/demo/app/build/tmp/compileJava/previous-compilation-data.bin
BUILD SUCCESSFUL in 351ms
10 actionable tasks: 1 executed, 9 up-to-date
当然,根据您认为合适的情况进行调整以获得不同的任务、略有不同的信息,或者可能通过 -P
获取任务名称如果您想要一个永久的、可重用的任务来进行这种内省(introspection),请使用参数。
关于gradle - 我如何知道 gradle 任务是否已定义输入和输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69858584/