2013-12-08 78 views
4

如何编写自定义gradle插件来处理自定义模块描述符中的依赖项? Gradle文档说明如下,但我一直没能找到任何能告诉我如何如何Gradle中的自定义依赖关系管理插件

即使你的项目使用自定义的依赖关系管理系统或 像一个Eclipse .classpath文件作为主数据 依赖管理,这是很容易写一个摇篮插件使用 这个数据在摇篮。

我一直保持Custom Ivy resolver for ATG projects(从this project分叉),但最近摇篮与1.8版本弃用这一点,我需要移植的实施,原生摇篮插件。

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产品安装作为工件源的自定义存储库。

没有摇篮,我需要的

  1. 的形式来维持依赖ATG的MANIFEST.MF文件
  2. 的Eclipse .classpath文件
  3. 依存关系的Ant构建脚本
  4. SonarQube配置

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

Gradle似乎有很多源代码,在过去的几天翻找它并没有给我带来任何地方。 (1)实现定制库,(2)实现自定义的依赖关系解析器(使用定制文件作为模块描述符),应该是这样的:如果有人可以指向我需要实现的接口列表,足以让我开始。

回答

0

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

+0

了解如何处理'.classpath'文件将至少解决一半我的问题,所以如果你能解释这是如何工作的,它会有所帮助。 –

+0

解析'.classpath'文件(例如使用Groovy的'XmlSlurper'类)并添加文件依赖关系,这与您在普通构建脚本中使用的方式相同。 –