【问题标题】:Gradle manage plugins on generated POM using maven pluginGradle 使用 maven 插件在生成的 POM 上管理插件
【发布时间】:2016-09-10 00:21:20
【问题描述】:

我在一个使用 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 似乎不支持定义 &lt;build&gt; 标记的内容,我需要导入某些插件才能成功构建 maven。

简而言之,我需要以下之一:

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

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

【问题讨论】:

    标签: maven gradle


    【解决方案1】:

    我选择了 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 构建脚本生成的位。

    【讨论】:

      猜你喜欢
      • 2014-10-29
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2016-08-31
      • 2014-09-06
      • 2018-03-20
      • 2013-06-06
      相关资源
      最近更新 更多