带有编译依赖项的 Gradle 任务



我想根据每个 Gradle 任务的 java 类中的注释生成一个文本文件。

我找到了一些参考资料,例如 https://mrhaki.blogspot.com/2014/09/gradle-goodness-running-groovy-scripts.html:

task runScript(type: JavaExec) {
main = 'com.mrhaki.CurrentDate'
classpath = sourceSets.main.compileClasspath
}

但在这里我必须使用我不想要的外部文件。

我尝试在build.gradle文件中定义类:

class MyScript {
def call() {
println ":: Vertx version : $io.vertx.core.impl.launcher.commands.VersionCommand.version"
}
}
task runScript(type: JavaExec) {
main = 'MyScript'
classpath = sourceSets.main.runtimeClasspath
}

但无法解决:

> Task :runScript FAILED
Error: Could not find or load main class MyScript

我可以使用一些解决方法将脚本作为 args 中的字符串传递,例如

task runGroovyScript(type: JavaExec) {
classpath = configurations.groovyScript
main = 'groovy.ui.GroovyMain'
args '-e', "println 'Hello Gradle!'"
}

但那将是超级丑陋的。

如何在 Gradle 任务中运行内联时髦代码?

您可以在任务的doFirstdoLast闭包中实现任何您想要的Groovy代码:

task doSomething {
doFirst {
// any Groovy code you want
println ":: Vertx version : $io.vertx.core.impl.launcher.commands.VersionCommand.version"
}
}

或者,您可以创建实现所需行为的自定义任务类型:

class MyTask extends DefaultTask {
@TaskAction
def doSomething() {
println ":: Vertx version : $io.vertx.core.impl.launcher.commands.VersionCommand.version"
}
}
task doSomething(type: MyTask)

最新更新