gpt4 book ai didi

maven - Gradle 使用 maven 插件在生成的 POM 上管理插件

转载 作者:行者123 更新时间:2023-12-03 04:32:22 25 4
gpt4 key购买 nike

我在一个使用 maven 和 gradle 的团队中,我有一个 gradle 项目想要生成一个正常工作的 pom 文件,以便我们的 maven 用户可以继续使用 maven。

到目前为止,我已经解决了这个问题,生成了一个具有适当依赖关系的 pom,如下所示:

build.gradle 摘录:

task createpom(dependsOn: 'build') << {
pom {
project {
groupId project.group
artifactId project.name
version project.version
}
}.writeTo("pom.xml")
}

build.finalizedBy(createpom)

这适用于仅在 pom 上创建依赖项,但 gradle 的 maven 插件 API 似乎不支持定义 <build> 的内容标签,我需要导入某些插件才能成功构建 Maven。

简而言之,我需要以下之一:
  • 将构建标签后处理到生成的 POM 中。我可以通过直接操作文件来做到这一点,但我不想这样做。
  • 将 POM 分成两部分,一部分仅包含 gradle 管理的依赖项,另一部分仅包含人工管理的东西。不幸的是,我没有看到任何通过文件名任意命名 pom 依赖项的方法。仅涉及添加仅 pom 项目或使用多模块构建的解决方案,考虑到我不需要可共享的父 pom 或多模块项目,我都不喜欢这两种解决方案。我更喜欢类似于 <import>my/arbitrary/path/buildstuff.xml</import> 的东西,因为真正需要做的就是将同一项目/生命周期的 POM 的两半粘合在一起。

  • 除了我到目前为止发现的方法之外,还有更好的方法来实现这一点吗?

    最佳答案

    我选择了 XML 调整解决方案,事实证明它比我预期的要优雅得多。实现涉及向我的项目目录添加一个非托管 pom 以保存构建的人工管理部分,并修改我的 createpom 任务:

    task createpom(dependsOn: 'build') << {
    pom {
    project {
    groupId project.group
    artifactId project.name
    version project.version
    }
    }.withXml {
    def templateXml = (new XmlParser()).parse('pom-unmanaged.xml')
    asNode().append(templateXml.build)
    }.writeTo("pom.xml")
    }
    pom-unmanaged.xml采用典型 pom 的形式,减去我的 gradle 构建脚本生成的位。

    关于maven - Gradle 使用 maven 插件在生成的 POM 上管理插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216171/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com