如何编写自定义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产品安装作为工件源的自定义存储库。
没有摇篮,我需要的
- 的形式来维持依赖ATG的
MANIFEST.MF
文件 - 的Eclipse
.classpath
文件 - 依存关系的Ant构建脚本
- SonarQube配置
由于我无法摆脱ATG MANIFEST.MF文件,我会喜欢写一个自定义插件来允许它们在Gradle构建中使用。然后,我可以使用Gradle作为我的构建系统,也可以生成Eclipse .classpath和.project文件,并针对该项目运行Sonar。
Gradle似乎有很多源代码,在过去的几天翻找它并没有给我带来任何地方。 (1)实现定制库,(2)实现自定义的依赖关系解析器(使用定制文件作为模块描述符),应该是这样的:如果有人可以指向我需要实现的接口列表,足以让我开始。
了解如何处理'.classpath'文件将至少解决一半我的问题,所以如果你能解释这是如何工作的,它会有所帮助。 –
解析'.classpath'文件(例如使用Groovy的'XmlSlurper'类)并添加文件依赖关系,这与您在普通构建脚本中使用的方式相同。 –