13

我正在考虑搬到 Gradle。但是,我确实有一些 Maven 插件需要在可预见的将来得到支持。

有没有办法使用 Gradle 构建 Maven 插件?

4

4 回答 4

5

对我有用:

  • 编译插件的源代码后生成项目的 POM:"install.repositories.mavenInstaller.pom.writeTo( 'pom.xml' )"
  • 生成 POM 补丁并提供插件的坐标和正确的目标目录
  • "mvn org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor"

这种方式"build/classes/main/META-INF/maven/plugin.xml"是由任务创建然后正确打包的jar,这就是 jar 文件成为 Maven 插件 AFAIK 所需的全部内容。另外,我相信,应该在插件中使用“maven-plugin-annotations” 。

task pluginDescriptor( type: Exec ) {
    commandLine 'mvn', '-e', '-B', 'org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor'
    doFirst {
        final File pom = project.file( 'pom.xml' )
        install.repositories.mavenInstaller.pom.writeTo( pom )
        assert pom.file, "[$pom.canonicalPath] was not created"

        pom.text = pom.text.
            replace( '<groupId>unknown</groupId>',             "<groupId>${project.group}</groupId>" ).
            replace( '<artifactId>empty-project</artifactId>', "<artifactId>${project.name}</artifactId>" ).
            replace( '<version>0</version>',                   """
                                                              |<version>${version}</version>
                                                              |  <packaging>maven-plugin</packaging>
                                                              |  <build>
                                                              |    <directory>\${project.basedir}/build</directory>
                                                              |    <outputDirectory>\${project.build.directory}/classes/main</outputDirectory>
                                                              |  </build>
                                                              |""".stripMargin().trim())
    }
    doLast {
        final  pluginDescriptor = new File(( File ) project.compileGroovy.destinationDir, 'META-INF/maven/plugin.xml' )
        assert pluginDescriptor.file, "[$pluginDescriptor.canonicalPath] was not created"
        println "Plugin descriptor file:$pluginDescriptor.canonicalPath is created successfully"
    }
}

project.compileGroovy.doLast{ pluginDescriptor.execute() }
于 2013-06-19T00:44:49.497 回答
0

我不知道允许构建 Maven 插件的第三方 Gradle 插件。一种可能性是调用 Maven 来完成部分工作(特别是元数据生成)。可以即时创建必要的 POM。另一种可能性是将元数据提交到源代码管理并手动更新它(可能在需要时通过运行 Maven)。最后但同样重要的是,您可以编写一些代码在 Gradle 端执行元数据生成,可能重用一些 Maven 代码。

于 2012-06-26T14:42:34.747 回答
0

我发现这个 Gradle Plugin 可以用来创建 Maven Plugin Maven Plugin Builder Gradle Plugin但我还没有让它工作

于 2018-04-30T21:11:12.993 回答
-1

目前该功能不受支持,但它在开发路线图上。每隔一段时间检查一次路线图仪表板,看看状态是否发生了变化。

于 2012-06-26T14:40:56.503 回答