首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Gradle Ant任务中重构通用代码?

如何在Gradle Ant任务中重构通用代码?
EN

Stack Overflow用户
提问于 2016-03-23 00:37:41
回答 1查看 107关注 0票数 0

我有以下分级代码:

代码语言:javascript
复制
ant.jdiff(destdir: outputDir) {
  old(name: "platform-${oldVersion}") {
    oldVersionRoot.eachDirMatch({ dir ->
      new File("${dir}/src").exists()
    }) { dir ->
      dirset(dir: "${dir}/src")
    }
  }

  'new'(name: "platform-${currentVersion}") {
    currentVersionRoot.eachDirMatch({ dir ->
      new File("${dir}/src").exists()
    }) { dir ->
      dirset(dir: "${dir}/src")
    }
  }
}

我试过:

代码语言:javascript
复制
final getSrcDirSets = { root ->
  final result = []

  root.eachDirMatch({ dir ->
    new File("${dir}/src").exists()
  }) { dir ->
    result.append(dirset(dir: "${dir}/src"))
  }

  result
}

ant.jdiff(destdir: outputDir) {
  old(name: "example-${oldVersion}") {
    getSrcDirSets(oldVersionRoot)
  }

  'new'(name: "example-${currentVersion}") {
    getSrcDirSets(currentVersionRoot)
  }
}

但这会导致以下错误:

代码语言:javascript
复制
Caused by: org.gradle.api.internal.MissingMethodException: Could not find method old() for arguments [{name=example-1.2.3}, build_at5jtticxum4wmuh64edt9rhd$_run_closure6$_closure26$_closure28$_closure29@26f75d38] on task ':jdiff'.

如何将通用代码重构为单独的函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-25 00:04:12

一种方法,虽然并不理想,因为所有的DefaultAntBuilder实例都会受到影响,那就是通过Groovy:

代码语言:javascript
复制
ant.metaClass.jDiff_getSrcDirSets = { root ->
  root.eachDirMatch({ dir ->
    new File("${dir}/src").exists()
  }) { dir ->
    dirset(dir: "${dir}/src")
  }
}

ant.property(name: "JDIFF_HOME", value: jdiffHome)
ant.jdiff(
    destdir: outputDir,
    verbose: 'off',
    stats: 'on',
    docchanges: 'off',
    source: '1.8') {
  old(name: "${project.name}-${oldVersion}") {
    jDiff_getSrcDirSets(oldVersionRoot)
  }

  'new'(name: "${project.name}-${currentVersion}") {
    jDiff_getSrcDirSets(currentVersionRoot)
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36167818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档