Gradle plugin task ordering
是)我有的?
gradle构建脚本
apply plugin:'application'
mainClassName ="MainApp"
sourceSets.main.java.srcDirs = ['。']
所以,当我执行
1 2 3 4 5 6 7 | C:\tmp\gradle-fun>gradle run :compileJava :processResources UP-TO-DATE :classes :run Hello MainApp !! BUILD SUCCESSFUL |
我想做的事?
现在我想知道在
这背后有理由,我想确保每次gradle都应该编译java文件,并且应该刷新所有.class文件(它的一些要求)
我试过了什么?
添加了一个包装器任务,它按顺序执行干净任务和运行任务。
1 2 3 4 | apply plugin: 'application' mainClassName ="MainApp" sourceSets.main.java.srcDirs = ['.'] task exec(dependsOn: ['clean', 'run']) |
因此,当我运行
1 2 3 4 5 6 7 8 9 | C:\tmp\gradle-fun>gradle run :clean :compileJava :processResources UP-TO-DATE :classes :run Hello MainApp !! :exec BUILD SUCCESSFUL |
我想知道什么?
有没有办法避免编写包装器任务并做一些Gradle魔法来达到要求?
您可以创建自己的任务,
1 | task cleanRun(dependsOn: [clean, run]) |
或者,您可以按照Mark Vieira的回答更改接线:
1 2 | run.dependsOn 'clean' classes.mustRunAfter 'clean' |
第二行确保它不会清理已编译的类。
希望这有助于=)
只需让
1 | run.dependsOn 'cleanCompileJava' |
编辑:为避免在运行之前删除您的类,请添加:
1 | classes.mustRunAfter 'cleanCompileJava' |