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

时间:2016-05-13 17:38:12

标签: maven gradle

我在使用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 build。

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

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

除了我迄今为止发现的内容之外,还有更好的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

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