1

私は gradle と groovy の両方の初心者です。現在、Subversion リポジトリにタグを設定しようとしています。以下は私のgradleスクリプトです:

task svnrev {
    // use ant to retrieve revision.
    ant.taskdef(resource: 'org/tigris/subversion/svnant/svnantlib.xml') {
        classpath {
            fileset(dir: 'lib/DEV/svnant', includes: '*.jar')
        }
    }
    ant.svn(javahl: 'false', svnkit: 'true', username: "${_svn_user}", password: "${_svn_password}", failonerror: 'false') {
        ant.info(target: "${_svn_source_url}", propPrefix: 'svninfo')
    }
    // retrieve property of ant project and assign it to a task's property, refer to:
    // http://gradle.1045684.n5.nabble.com/can-t-find-or-extract-properties-from-svnant-info-function-in-gradle-td3335388.html
    ext.lastRev = ant.getProject().properties['svninfo.lastRev']
    // retrieve property of gradle project
    //getProject().properties['buildFile']
    }

task svntag << {
    ant.svn(javahl: 'false', svnkit: 'true', username: "${_svn_user}", password: "${_svn_password}", failonerror: 'false') {
        copy(srcurl: "${_svn_source_url}", desturl="${_svn_tag_url}", message="Create tag: ${_svn_tag_url}")
    }
}

タスク「svnrev」は正常に動作しますが、「gradle svntag」を実行すると、常にエラー メッセージが表示されます。

* What went wrong:
A problem occurred evaluating root project 'AFM-IGPE-v2.0.0'.
> Could not find method copy() for arguments     [{srcurl=svn://192.168.2.9/IGPE/trunk_dev}, svn://192.168.2.9/IGPE/tag/AFM, Create tag: svn://192.168.2.9/IGPE/tag/AFM] on root project 'AFM-IGPE-v2.0.0'.

また、私は試しました

ant.copy(srcurl: "${_svn_source_url}", desturl="${_svn_tag_url}", message="Create tag: ${_svn_tag_url}")

今回は、別のエラー メッセージが表示されます。

* What went wrong:
A problem occurred evaluating root project 'AFM-IGPE-v2.0.0'.
> No signature of method: org.gradle.api.internal.project.DefaultAntBuilder.copy() is applicable for argument types: (java.util.LinkedHashMap, org.codehaus.groovy.runtime.GStringImpl, org.codehaus.groovy.runtime.GStringImpl) values: [[srcurl:svn://192.168.2.9/IGPE/trunk_dev], ...]
Possible solutions: any(), notify(), wait(), grep(), every(), find()

実際、ant build.xml を gradle に単純に変換しただけで、ant build.xml はうまく機能します。一定期間グーグルで検索しましたが、結果が見つかりませんでした。Pls はあなたの親切な助けを前もって助け、感謝します。

4

1 に答える 1

1

一見すると、次の 2 つの問題を見つけることができます。

  1. ではなく、でなければなりtask svnrev << {ませんtask svnrev {
  2. Groovy の名前付きパラメーターは、:ではなく で記述されます=。(後者は、代わりにデフォルト値を位置パラメーターに割り当てます。)これがおそらく、エラーが発生する理由です( と の間でant.copy混合して一致させます)。:=
于 2012-12-20T10:26:37.590 に答える