Gradle中的自定义依赖关系管理插件

时间:2013-12-08 12:10:44

标签: gradle

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

  

即使您的项目正在使用自定义依赖关系管理系统或   类似Eclipse .classpath文件的东西,作为主数据   依赖管理,编写Gradle插件非常容易使用   这个数据在Gradle。

我一直在维护Custom Ivy resolver for ATG projects(从this project分叉),但Gradle最近不推荐使用1.8版,我需要将实现移植到本机Gradle插件。

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

e.g。

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,我需要以

的形式维护依赖关系
  1. ATG的MANIFEST.MF个文件
  2. Eclipse .classpath个文件
  3. Ant构建脚本的依赖关系
  4. SonarQube配置
  5. 由于我无法摆脱ATG MANIFEST.MF文件,我想写一个自定义插件来允许它们在Gradle构建中使用。然后我可以使用Gradle作为我的构建系统,它也可以生成Eclipse .classpath和.project文件,并针对项目运行Sonar。

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

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

1 个答案:

答案 0 :(得分:0)

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