Gradle 插件任务排序
Gradle plugin task ordering
我有什么?
- Java 带有 Main class (MainApp)
的源文件
gradle 构建脚本
应用插件:'application'
mainClassName = "MainApp"
sourceSets.main.java.srcDirs = ['.']
因此,当我执行 gradle run
时,它会执行主要方法并且一切正常。
C:\tmp\gradle-fun>gradle 运行
:编译Java
:processResources 最新
:classes
:运行
你好主应用程序!
构建成功
我想做什么?
现在我想知道在 run
任务执行之前清理构建目录的清理任务(常见构建任务)。
这背后是有原因的,我想确保每次 gradle 都应该编译 java 文件并且所有 .class 文件都应该刷新(它的一些要求)
我试过什么?
添加了一个包装器任务,它按顺序执行清理任务和 运行 任务。
apply plugin: 'application'
mainClassName = "MainApp"
sourceSets.main.java.srcDirs = ['.']
task exec(dependsOn: ['clean', 'run'])
所以当我 运行 gradle exec
时,它会正常工作。但是我觉得当你有额外的任务只是为了命令执行时它的补丁工作。
C:\tmp\gradle-fun>gradle 运行
:干净的
:编译Java
:processResources 最新
:classes
:运行
你好主应用程序!
:执行
构建成功
我想知道什么?
有什么方法可以避免编写包装器任务并做一些 Gradle 魔术来达到要求吗?
让 run
任务依赖于 clean
。这将确保您的项目在每个 运行 之前得到清理。如果您想更具体地说明您的用例,您可以简单地清除 compileJava
任务。
run.dependsOn 'cleanCompileJava'
编辑: 为避免在 运行 之前删除您的 类 添加:
classes.mustRunAfter 'cleanCompileJava'
您可以创建自己的任务,将 clean
和 run
作为依赖项:
task cleanRun(dependsOn: [clean, run])
或者,您可以按照 Mark Vieira 的回答更改线路:
run.dependsOn 'clean'
classes.mustRunAfter 'clean'
第二行确保它不会清除已编译的 类。
希望这对您有所帮助 =)
我有什么?
- Java 带有 Main class (MainApp) 的源文件
gradle 构建脚本
应用插件:'application' mainClassName = "MainApp" sourceSets.main.java.srcDirs = ['.']
因此,当我执行 gradle run
时,它会执行主要方法并且一切正常。
C:\tmp\gradle-fun>gradle 运行 :编译Java :processResources 最新 :classes :运行 你好主应用程序! 构建成功
我想做什么?
现在我想知道在 run
任务执行之前清理构建目录的清理任务(常见构建任务)。
这背后是有原因的,我想确保每次 gradle 都应该编译 java 文件并且所有 .class 文件都应该刷新(它的一些要求)
我试过什么?
添加了一个包装器任务,它按顺序执行清理任务和 运行 任务。
apply plugin: 'application'
mainClassName = "MainApp"
sourceSets.main.java.srcDirs = ['.']
task exec(dependsOn: ['clean', 'run'])
所以当我 运行 gradle exec
时,它会正常工作。但是我觉得当你有额外的任务只是为了命令执行时它的补丁工作。
C:\tmp\gradle-fun>gradle 运行 :干净的 :编译Java :processResources 最新 :classes :运行 你好主应用程序! :执行 构建成功
我想知道什么?
有什么方法可以避免编写包装器任务并做一些 Gradle 魔术来达到要求吗?
让 run
任务依赖于 clean
。这将确保您的项目在每个 运行 之前得到清理。如果您想更具体地说明您的用例,您可以简单地清除 compileJava
任务。
run.dependsOn 'cleanCompileJava'
编辑: 为避免在 运行 之前删除您的 类 添加:
classes.mustRunAfter 'cleanCompileJava'
您可以创建自己的任务,将 clean
和 run
作为依赖项:
task cleanRun(dependsOn: [clean, run])
或者,您可以按照 Mark Vieira 的回答更改线路:
run.dependsOn 'clean'
classes.mustRunAfter 'clean'
第二行确保它不会清除已编译的 类。
希望这对您有所帮助 =)