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: 私はグルーヴィーな専門家ではなく、昨年、それに対処する明確な解決策を見つけられませんでした。そのため、当時、私はフラストレーションから小さなツールを作成し、アリのグルーヴィーなタスクに関する問題を解決しました:
Feniseca .
これはオープン ソースであり、ドキュメントを更新したばかりですが、Feniseca は POSIX 環境に対してのみテストしたことに注意してください。とにかくこれが役立つことを願っています!

于 2012-07-26T06:48:26.653 に答える