gpt4 book ai didi

java - 从 Gradle 执行 Groovy 脚本而不编译 Java

转载 作者:行者123 更新时间:2023-12-02 10:42:21 25 4
gpt4 key购买 nike

我有一个使用 Gradle 的 Java 项目。我还使用 Groovy 生成一些将在 Java 代码中使用的类。 Gradle 在下面的单独任务中执行脚本:

task generateClass(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'generatorScript'
}

如果我运行此任务,它首先启动 Java 编译,然后才执行脚本。因此,如果编译失败,我的生成器脚本将不会被执行。正如前面提到的,脚本会生成一个类,而我的Java代码实际上依赖于该类,因此,如果不生成,Java将不会被编译。恶性循环。

脚本本身不依赖于某些Java类,并且放置在单独的源目录中:

/src
/main
/java
/...(java classes)
/groovy
generatorScript.groovy

似乎没有什么能干扰我独立于 Java 编译单独执行脚本。

我怎样才能实现这一目标?

最佳答案

问题是您在 main 源集中有生成器 groovy 脚本,并且您尝试编译此 groovy 脚本以将其用作 JavaExec 任务的类路径。我猜这就是执行compileJava 任务的原因。

您可以采用另一种方式,使用 groovy.ui.GroovyMain 执行脚本,并使用以下基于 this link 的解决方案

configurations {
// a dedicated Configuration for Groovy classpath
groovyScript
}

dependencies {
// Set Groovy dependency so groovy.ui.GroovyMain can be found.
groovyScript localGroovy()
}

task generateClass(type: JavaExec) {

// Set class path used for running Groovy command line.
classpath = configurations.groovyScript

// Main class that runs the Groovy command line.
main = 'groovy.ui.GroovyMain'

// Pass your groovy script as argument of the GroovyMain main
// (can be improved)
args 'src/main/groovy/generatorScript.groovy'

}

关于java - 从 Gradle 执行 Groovy 脚本而不编译 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52849047/

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