1

我有文件夹测试包含:

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方法,该方法将使用上述方法自动执行。但是控制应该直接调用哪些方法可能会很好。

4

2 回答 2

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>
于 2012-07-19T06:55:42.260 回答
0

“但控制应该直接调用哪些方法可能会很好。”
@u123:我不是 groovy 专家,去年我没有找到明显的解决方案来解决这个问题。所以当时我出于挫败感做了一个小工具,来解决我在 ant groovy 任务中遇到的问题:
Feniseca
它是开源的,我刚刚更新了文档,但请注意,我仅针对 POSIX 环境测试了 Feniseca。希望这无论如何都能有所帮助!

于 2012-07-26T06:48:26.653 回答