在ant build.xml中加载groovy类并在ant属性中存储返回值?

时间:2012-07-18 21:01:42

标签: ant groovy

我的文件夹测试包含:

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

2 个答案:

答案 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。希望这无论如何都有帮助!