我想根据每个 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 任务中运行内联时髦代码?
您可以在任务的doFirst
或doLast
闭包中实现任何您想要的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)