如何编写自定义gradle插件来处理自定义模块描述符中的依赖项,来自自定义存储库?Gradle文档如下所述,但我找不到任何告诉我“如何”的信息。
即使您的项目正在使用自定义依赖项管理系统或类似于Eclipse .classpath文件作为依赖项管理的主数据,编写一个Gradle插件以在Gradle中使用此数据非常容易。
我一直在维护ATG项目的自定义Ivy解析器(从此项目派生),但是Gradle最近在1.8版本中将其弃用,并且我需要将实现移植到本机Gradle插件。
模块依赖关系具有传递性,并且可能涉及自定义模块或位于ATG产品安装中的模块。因此,我需要定义一个自定义存储库,该存储库可以使用ATG产品安装作为构件源。如果没有Gradle,则需要以以下形式维护依赖项:ATG的MANIFEST.MF文件、Eclipse的.classpath文件、Ant构建脚本的依赖项和SonarQube配置。由于我无法摆脱ATG MANIFEST.MF文件,因此我想编写一个自定义插件,以允许它们在Gradle构建中使用。然后我可以使用Gradle作为我的构建系统,该系统还可以生成Eclipse .classpath和.project文件,并针对项目运行Sonar。Gradle似乎有很多源代码,而在过去的几天里翻找它并没有让我有所进展。如果有人能指引我到需要实现的接口列表(1)实现自定义存储库,以及(2)实现自定义依赖项解析器(以使用自定义文件作为模块描述符),那就足以让我开始了。
即使您的项目正在使用自定义依赖项管理系统或类似于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)实现自定义依赖项解析器(以使用自定义文件作为模块描述符),那就足以让我开始了。
.classpath
文件将解决我至少一半的问题,如果您能解释一下它的工作原理,那将会很有帮助。 - Rajesh J Advani.classpath
文件(例如使用Groovy的XmlSlurper
类),并以与普通构建脚本相同的方式添加文件依赖项。 - Peter Niederwieser