如何使gradle中JavaExec任务的类任务依赖于另一个任务?
这可能吗?我有点像:如何使gradle中JavaExec任务的类任务依赖于另一个任务?,gradle,Gradle,这可能吗?我有点像: task taskB(dependsOn: taskA) { // Do stuff. } task taskA { // Do stuff. } task runClass(dependsOn: 'classes', type: JavaExec) { main = 'com.some.package.MainClass' classpath = some.classpath } sourceSets.main.resources.s
task taskB(dependsOn: taskA) {
// Do stuff.
}
task taskA {
// Do stuff.
}
task runClass(dependsOn: 'classes', type: JavaExec) {
main = 'com.some.package.MainClass'
classpath = some.classpath
}
sourceSets.main.resources.srcDir "build/taskB" // output dir of taskB
processResources.dependsOn(taskB)
我想在JavaExec任务中的classes
之前运行taskB
。我该怎么办?将其更改为dependsOn:['taskB','classes']
似乎没有帮助——它仍然会先执行classes
编辑:
添加
classes.dependsOn taskB
似乎奏效了。这是最好的方法吗?在Gradle中,foo.dependsOn(bar,baz)
相当于foo.dependsOn(bar);foo.dependsOn(baz)
。它并不意味着在bar
和baz
之间有任何顺序,就像在Ant中那样(具有软依赖特性)
您能否解释一下taskB
的功能,以及为什么您认为它需要在类之前运行
编辑:
根据您在下面的评论,我会这样做:
task taskB(dependsOn: taskA) {
// Do stuff.
}
task taskA {
// Do stuff.
}
task runClass(dependsOn: 'classes', type: JavaExec) {
main = 'com.some.package.MainClass'
classpath = some.classpath
}
sourceSets.main.resources.srcDir "build/taskB" // output dir of taskB
processResources.dependsOn(taskB)
当然,这可以通过多种方式进行改进,但它基本上是正确的。taskB
将一些文件复制到源代码树中。实际上,从技术上讲,我需要它在processResources
之前运行,这实际上是复制资源文件的任务(将文件复制到taskB
中)。我猜类
取决于进程资源
。。。但是让processResources
依赖于taskB
可能更安全。附加上下文:这是一个DropWizard项目,资源中有UI文件taskB
运行grunt创建UI文件的分发,以复制到DropWizard最终将使用的资源。