当前位置: 首页 > 知识库问答 >
问题:

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

呼延钱明
2023-03-14

如何编写自定义gradle插件来处理自定义存储库中自定义模块描述符中的依赖关系?gradle文档说了以下内容,但我还没有找到任何可以告诉我如何操作的内容。

即使您的项目使用的是自定义依赖关系管理系统或类似Eclipse的东西。类路径文件作为依赖关系管理的主数据,编写Gradle插件以在Gradle中使用此数据非常容易。

我一直在为ATG项目维护一个定制的常春藤解析器(源自此项目),但Gradle最近在版本1.8中不推荐使用它,我需要将实现移植到本地Gradle插件。

ATG的实现使用具有清单的“模块”(与Gradle项目不同)。模块描述符的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,我需要以

  1. ATG的清单。MF文件
  2. Eclipse<代码>。类路径文件
  3. Ant构建脚本的依赖关系
  4. SonarQube配置

因为我无法摆脱ATG清单。MF文件,我想写一个写自定义插件,允许它们在Gradle构建中使用。然后,我可以使用Gradle作为构建系统,它也可以生成Eclipse。类路径和。项目文件,并对项目运行Sonar。

Gradle似乎有很多源代码,在过去的几天里翻遍了它,我什么也找不到。

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

共有1个答案

郎聪
2023-03-14

Eclipse<代码>。上面提到的类路径用例可以通过解析该文件并将其转换为渐变文件依赖项来解决。目前无法插入自定义存储库实现。

 类似资料:
  • 我试图为其他gradle项目使用的自定义gradle插件构建一个jar。我使用java编写插件。我有一个问题,包括我的jar中的依赖项。如果我使用下面的代码构建jarbuild.gradle 在一个项目中应用插件时,我得到了一个针对guava类的NoClassDefFound异常。如果我在 它表示未找到Id为“my Plugin”的。如何在gradle插件jar中包含依赖项?

  • 我正在使用Gradle的Spring Boot框架。我知道,为了包含一些Spring依赖项,我可以引用“starters”而不显式定义版本;该版本将由我选择的Spring Boot版本控制,它是Spring Boot Gradle插件的版本。示例(省略非相关的分级代码): 请注意,没有为我的应用程序依赖项定义显式版本。 我如何确保我为那些依赖项使用的版本与我的其他Spring Boot依赖项兼容?

  • 我在我的应用程序中使用Webpack,在其中我创建了两个入口点--用于所有JavaScript文件/代码的bundle.js,以及用于所有库(如jQuery和React)的vendors.js。我该怎么做才能使用具有jQuery作为依赖项的插件,并且我也想在vendors.js中拥有这些插件呢?如果那些插件有多个依赖项呢? 目前,我正在尝试使用这个jQuery插件:https://github.c

  • 主要内容:声明依赖关系,依赖关系配置,外部依赖,存储库,发布文件构建脚本定义了构建项目的过程; 每个项目包含一些依赖项和一些发表项。依赖性意味着支持构建项目的东西,例如来自其他项目的所需文件以及类路径中的外部(如或)。发布表示项目的结果,如测试类文件和构建文件,如文件。 负责构建和发布结果。 发布基于定义的任务。 可能希望将文件复制到本地目录,或将其上传到远程Maven或lvy存储库,或者可以在同一个多项目构建中使用另一个项目的文件。 发布的过程称为发布。 声

  • 在另一个项目中,我使用/应用这个插件: 但是如何从MyGradlePlugin.groovy中的apply方法中迭代公共依赖项并打印它们的坐标(artifactId、groupId、version)?