build.gradle 中的父 pom 用法

Posted

技术标签:

【中文标题】build.gradle 中的父 pom 用法【英文标题】:Parent pom usage in build.gradle 【发布时间】:2018-05-18 08:56:59 【问题描述】:

我需要将 maven 项目转换为 gradle 项目。一切都很好,但是我遇到了一个问题,在当前项目中,我们使用依赖管理 throw parent pom of maven 和 gradle,只要我研究过,就不可能这样做。我正在考虑以某种方式将父 pom 转换为 maven bom 并在 build.gradle 中使用,因为我知道 gradle 可以使用 maven bom。

有没有人有更好的想法来实现它? 或者可能有人也有这种问题,可以建议最好的方法吗?

问候

【问题讨论】:

【参考方案1】:

您可以使用我的gradle-maven-transform 插件将您的 pom.xmls 转换为 gradle 脚本。

您可以使用DependencyAggregator 查找所有项目中通用的版本,并生成包含通用版本的根 build.gradle。

然后每个项目脚本都可以从根项目引用版本变量,而不是硬编码

您可以选择使用nebula dependency recomnender 插件来管理常用版本。 maven-transform 插件也可以生成脚本来支持这种风格的声明

在评估 gradle 构建时,您可以在 gradle 构建中“应用”生成的 gradle 脚本。在此期间,maven 和 gradle 构建将并行工作。一旦您对 gradle 构建感到满意,您就可以将生成的脚本复制粘贴到您的 build.gradle 文件中,并永远抛弃 maven!耶!

【讨论】:

听起来不错,我会仔细检查,但总的来说,问题是我们公司的依赖管理历史上是通过父 pom.xml 文件完成的,现在这是唯一阻止我迁移到gradle(我非常喜欢)。所以应该有一种方法仍然保留父 pom.xml 文件(至少在一段时间内)并使用该文件中的版本。您的项目是否将其作为结果? 查看 nebula 依赖推荐器中的 maven bom provider 文档。我认为您可以将父 pom 用作 BOM。假设每个版本都在父 pom 中,然后您可以使用 maven-transform-plugin 和自定义 freemarker 模板从您的项目 pom 生成 gradle 脚本,这些脚本省略依赖声明中的版本号(因为它们将由依赖推荐器注入) 解决了我的问题,非常感谢,将您的答案标记为正确 我可能会将isManagedDependency(String groupId, String artifactId) 的概念添加到maven-transform 插件中,以便转换可以以不同的方式声明“托管”依赖项。目前这可以手动完成......所有信息都在模型中......但我可能会更容易开箱即用

以上是关于build.gradle 中的父 pom 用法的主要内容,如果未能解决你的问题,请参考以下文章

Gradle build.gradle 到 Maven pom.xml

Netbeans 使用 pom.xml (Maven) 而不是 build.gradle (Gradle)

Gradle build.gradle to Maven pom.xml ,终于找到你了。

如何从build.gradle导入依赖关系到pom.xml

如何将 gradle 中的 groovy 任务转换为 Gradle Kotlin DSL 以生成 pom.xml?

是否有可能有一个远程 gradle.properties 文件