繁体   English   中英

具有编译依赖项的 Gradle 任务

[英]Gradle task with compile dependencies

我想根据 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 :

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 任务中运行内联 groovy 代码?

您可以在任务的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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM