gradle - svnant的嵌套复制任务无法在gradle中工作

标签 gradle

我是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效果很好。我已经搜索了一段时间,但是没有找到结果。请帮助,并提前感谢您的帮助。

最佳答案

乍一看,我可以发现两个问题:

  • 必须是task svnrev << {,而不是task svnrev {
  • Groovy命名参数是使用:而不是=编写的。 (相反,后者将默认值分配给位置参数。)这可能就是为什么会收到ant.copy错误的原因(您在:=之间混合和匹配)。
  • 关于gradle - svnant的嵌套复制任务无法在gradle中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13969364/

    相关文章:

    unit-testing - Gradle Groovy插件的测试未获取测试资源

    java - 如何找出 IntelliJ 中定义库的位置?

    android - 错误 : Failed to find: com. android.support :support-v4:20. 0.+

    android - 带有Gradle的Android Studio拼写检查器

    android - 在Android Studio中打开另一个项目后,添加的配置消失

    java - Flutter android 应用程序在签名发布后尝试调试时崩溃

    gradle - 如何在Intellij中导入具有不同结构的Gradle项目

    Android:由于 firebase/com.google.android.gms:play-services-auth 版本冲突,无法解析 GoogleSignInClient

    gradle - 为什么 kotlin gradle 插件无法使用 1.8 目标构建?

    java.lang.NoClassDefFoundError : org/springframework/data/repository/config/BootstrapMode