What I have?
-
带有Main类的Java源文件(MainApp)
-
gradle构建脚本
apply plugin:'application'mainClassName =“MainApp”sourceSets.main.java.srcDirs = [' . ']
所以,当我执行 gradle run
时,它会执行main方法,一切都很完美 .
C:\tmp\gradle-fun>gradle run
:compileJava
:processResources UP-TO-DATE
:classes
:run
Hello MainApp !!
BUILD SUCCESSFUL
What I want to do?
现在我想知道在执行 run
任务之前清理构建目录的干净任务(常见构建任务) .
这背后有理由,我想确保每次gradle都应该编译java文件,并且应该刷新所有.class文件(它的一些要求)
What I have tried?
添加了一个包装器任务,它按顺序执行干净任务和运行任务 .
apply plugin: 'application'
mainClassName = "MainApp"
sourceSets.main.java.srcDirs = ['.']
task exec(dependsOn: ['clean', 'run'])
因此,当我运行 gradle exec
时,它可以正常工作 . 但是,当你有额外的任务只是为了执行订单时,我觉得它的补丁工作 .
C:\tmp\gradle-fun>gradle run
:clean
:compileJava
:processResources UP-TO-DATE
:classes
:run
Hello MainApp !!
:exec
BUILD SUCCESSFUL
What I would like to know?
有没有办法避免编写包装器任务并做一些Gradle魔法来达到要求?
2 回答
只需
run
任务取决于clean
. 这将确保在每次运行之前清理您的项目 . 如果您想更具体地了解您的用例,您只需清理compileJava
任务即可 .Edit: 为避免在运行之前删除您的类,请添加:
您可以使用
clean
和run
作为依赖项创建自己的任务:或者,您可以按照Mark Vieira的回答更改接线:
第二行确保它不会清理已编译的类 .
希望这有助于=)