gpt4 book ai didi

java - 具有编译依赖项的 Gradle 任务

转载 作者:行者123 更新时间:2023-12-01 16:39:31 25 4
gpt4 key购买 nike

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

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

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)

关于java - 具有编译依赖项的 Gradle 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61892435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com