在Gradle构建中使用groovy类
我正在尝试从build.gradle文件中运行Groovy类。我沿着方向走,但是我遇到了一个错误 生成文件是:在Gradle构建中使用groovy类,groovy,build,gradle,Groovy,Build,Gradle,我正在尝试从build.gradle文件中运行Groovy类。我沿着方向走,但是我遇到了一个错误 生成文件是: apply plugin: 'java' apply plugin: 'groovy' main { java { srcDirs = ["$projectDir/src/java"] } groovy { srcDirs = ["$projectDir/src/groovy"] } } dependencie
apply plugin: 'java'
apply plugin: 'groovy'
main {
java {
srcDirs = ["$projectDir/src/java"]
}
groovy {
srcDirs = ["$projectDir/src/groovy"]
}
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.2.0', files(....)
}
task fooTask << {
groovyClass groovyClass = new groovyClass()
groovyClass.foo()
}
但是,当我尝试运行gradlew compile fooTask时,出现以下错误:
无法解析类groovyClass
知道为什么吗
谢谢如果您想从构建(而不是在简单的Exec任务中)引用该类,则需要将该类添加到
buildSrc
。给定此目录结构:
|-buildSrc
| |- src
| |- main
| |- groovy
| |- GroovyClass.groovy
|- build.gradle
其中GroovyClass.groovy
是:
class GroovyClass {
void foo() {
println 'foo'
}
}
apply plugin: 'groovy'
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.2.1'
}
task fooTask << {
GroovyClass g = new GroovyClass()
g.foo()
}
而build.gradle
是:
class GroovyClass {
void foo() {
println 'foo'
}
}
apply plugin: 'groovy'
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.2.1'
}
task fooTask << {
GroovyClass g = new GroovyClass()
g.foo()
}
我已经尝试了中建议的解决方案,但问题仍然存在。您知道是否有办法改变gradle查找类的位置,因此,它将在src/src/main/groovy上查找,而不是buildSrc/src/main/groovy?我不知道。要运行构建,它首先必须运行构建,因此会出现鸡和蛋的情况。如果buildSrc中的groovy文件在这两个文件中都是必需的,并且您不想维护两个文件,那么不确定buildSrc中指向SRC中groovy文件的符号链接是否有效?gradle将从build.gradle中获取
srcDirs
中的groovy源代码。把任何你想成为gradle源目录的路径放进去,你就可以走了。