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 ,终于找到你了。