我正在为gradle编写一个自定义插件,作为单元测试的一部分,我想调用我的任务,但在此之前执行必备任务.
不幸的是,实际的插件是一个内部项目,所以我无法确定确切的来源,但我已经准备了一个单元测试来演示这个问题:
package toy
import org.gradle.api.Project
import org.gradle.testfixtures.ProjectBuilder
import org.junit.Test
class ToyTasksTest {
boolean task1Run = false
boolean task2Run = false
@Test
public void taskDependencies(){
Project p = ProjectBuilder.builder().build()
p.task("task1") << {
p.logger.info("task1 running")
task1Run = true
}
def task2 = p.task("task2", dependsOn: 'task1') << {
p.logger.info("task2 running")
task2Run = true
}
task2.execute() // <--- what magic do I need here instead of .execute()
assert task2Run == true
assert task1Run == true
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
Assertion failed:
assert task2Run == …Run Code Online (Sandbox Code Playgroud) 我想在animalSniffer插件中有一个任务依赖于所有源集中所有生产类(Java,Groovy,Scala)的编译,第二个任务依赖于所有源集中所有测试类的编译(可能是单独的test和integrationTest).
我不想依赖*classes任务,因为*classes任务应该依赖于animalSniffer任务(在编译后检测Java版本API不兼容并且可以停止构建).
在Gradle中有没有比检查AbstractCompile任务名称实例是否以"compileTest"开头更好的方法?
我正在开发一个依赖于另一个插件的自定义 Gradle 插件。对于要运行的特定任务,我必须首先从外部插件运行任务。
project.tasks.create("MyTaskName", MyTaskName) {
it.description = "MyDescription"
}.dependsOn("taskFromOtherPlugin")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只是使用基本功能。但是,我需要推断其他任务插件的命令行参数。手动运行外部任务时,它只是:
gradle taskFromOtherPlugin --parameter1 value1
Run Code Online (Sandbox Code Playgroud)
如何将 --parameter1 value1 放入 .dependsOn 结构中?所以我需要的是类似的东西
project.tasks.create("MyTaskName", MyTaskName) {
it.description = "MyDescription"
}.dependsOn("taskFromOtherPlugin --parameter1 value1")
Run Code Online (Sandbox Code Playgroud)