在Gradle中定制依赖管理插件

4
如何编写自定义gradle插件来处理自定义模块描述符中的依赖项,来自自定义存储库?Gradle文档如下所述,但我找不到任何告诉我“如何”的信息。
即使您的项目正在使用自定义依赖项管理系统或类似于Eclipse .classpath文件作为依赖项管理的主数据,编写一个Gradle插件以在Gradle中使用此数据非常容易。
我一直在维护ATG项目的自定义Ivy解析器(从此项目派生),但是Gradle最近在1.8版本中将其弃用,并且我需要将实现移植到本机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似乎有很多源代码,而在过去的几天里翻找它并没有让我有所进展。如果有人能指引我到需要实现的接口列表(1)实现自定义存储库,以及(2)实现自定义依赖项解析器(以使用自定义文件作为模块描述符),那就足以让我开始了。
1个回答

0

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


了解如何处理.classpath文件将解决我至少一半的问题,如果您能解释一下它的工作原理,那将会很有帮助。 - Rajesh J Advani
解析.classpath文件(例如使用Groovy的XmlSlurper类),并以与普通构建脚本相同的方式添加文件依赖项。 - Peter Niederwieser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接