您如何编写自定义 gradle 插件来处理自定义模块描述符中的依赖项,来自自定义存储库? gradle 文档说明了以下内容,但我找不到任何告诉我方法的信息。



我一直在维护 Custom Ivy resolver for ATG projects (从 this project fork ),但 Gradle 最近在 1.8 版中弃用了它,我需要将实现移植到 native Gradle 插件。

ATG 的实现使用“模块”(与 Gradle 项目不同),它们具有用于模块描述符的 MANIFEST.MF 文件。这些文件定义了模块所依赖的其他“模块”,以及构成当前模块的(直接)类路径的路径(jar 或目录)列表。

例如

ATG-Class-Path: lib/classes.jar lib/commons-beanutils-1.7.jar
ATG-Required: MyProj.core MyProj.integration.webservices DAF.Endeca.Assembler

模块依赖项是可传递的,可能指的是自定义模块或位于 ATG 产品安装中的模块。因此,我需要定义一个可以使用 ATG 产品安装作为工件来源的自定义存储库。

没有Gradle,我需要以以下形式维护依赖关系
  • ATG 的 MANIFEST.MF 文件
  • Eclipse .classpath 文件
  • Ant 构建脚本的依赖项
  • SonarQube 配置

  • 由于我无法摆脱 ATG MANIFEST.MF 文件,我想编写一个自定义插件来允许它们在 Gradle 构建中使用。然后我可以使用 Gradle 作为我的构建系统,它也可以生成 Eclipse .classpath 和 .project 文件,并对项目运行 Sonar。

    Gradle 似乎有很多源代码,过去几天翻找它并没有让我找到任何地方。

    如果有人可以指向我需要实现的接口(interface)列表(1)实现自定义存储库,以及(2)实现自定义依赖解析器(使用自定义文件作为模块描述符),那应该足以让我开始了。

    最佳答案

    上面提到的 Eclipse .classpath 用例可以通过解析该文件并将其转换为 Gradle 文件依赖项来解决。目前无法插入自定义存储库实现。

    关于gradle - Gradle 中的自定义依赖管理插件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20453233/

    10-11 22:26
    查看更多