我的文件夹测试包含:
test
-> groovy
-> MyClass.groovy
-> build.xml
MyClass.groovy 文件包含:
class MyClass {
void firstMethod(int i) {
println i
}
String secondMethod(String txt) {
return txt + "added text"
}
static void main(String[] args) {
}
}
在我的 build.xml 文件中(基于http://docs.codehaus.org/display/GROOVY/The+groovy+Ant+Task):
<target name="run-groovy-script-test">
<groovy src="groovy/MyClass.groovy">
<classpath>
<pathelement location="groovy"/>
</classpath>
def aClass = new MyClass()
aClass.secondMethod("asd")
</groovy>
</target>
运行以上命令:
groovy.lang.MissingMethodException: No signature of method: MyClass.secondMethod() is applicable for argument types: (java.lang.String) values: [some-text]
解决方案:删除src属性 - 请参阅以下评论。
我知道我可以在.groovy文件中指定一个 main 方法,该方法将使用上述方法自动执行。但是控制哪些方法应该直接调用可能会很好。
答案 0 :(得分:2)
//Declare a property in your ant.xml.
<property name="myproperty" value=""/>
<groovy>
//This will instantiate
def aClass = new MyClass()
//This will store the return value in the ant property
properties["myproperty"] = aClass.secondMethods()
</groovy>
答案 1 :(得分:0)
“但是控制哪些方法应该直接调用可能会很好。”
@ u123:我不是很专业,去年我没有找到解决这个问题的明显解决方案。所以当时我用挫折做了一个小工具,用蚂蚁常规任务来解决我的问题:
Feniseca。
它是开源的,我刚刚更新了文档,但请注意,我仅针对POSIX环境测试了Feniseca。希望这无论如何都有帮助!