2012-06-26 11 views

Respuesta

-1

Por el momento esa característica no es compatible, pero está en el development roadmap. Compruebe el roadmap dashboard de vez en cuando para ver si el estado cambió.

+1

Nuestro objetivo es más apoyar el _reuse_ de plugins de Maven desde Gradle, en lugar de admitir _build_ them. –

+0

Ya veo. Creo que leí mal la pregunta. –

+0

el enlace del panel de control de la hoja de ruta ya no está activo – Matthew

0

No conozco un complemento de Gradle de terceros que permita construir complementos de Maven. Una posibilidad sería llamar a Maven para hacer una parte del trabajo (en particular, la generación de metadatos). El POM necesario podría crearse sobre la marcha. Otra posibilidad sería comprometer los metadatos al control de origen y actualizarlo manualmente (posiblemente ejecutando Maven cuando sea necesario). Por último, pero no menos importante, podría escribir algún código que realice la generación de metadatos en el lado de Gradle, posiblemente reutilizando algún código de Maven.

+0

Lástima que esto no está planeado. Veamos si aparece una buena solución ... –

3

Here's something que trabajó para mí:

  • Después de compilar las fuentes de plug-in generan POM del proyecto: "install.repositories.mavenInstaller.pom.writeTo('pom.xml')"
  • Patch POM generada y proporcionar coordenadas y directorios de destino correctas
  • de plug-in Run "mvn org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor"

De esta forma, se crea "build/classes/main/META-INF/maven/plugin.xml" y luego se empaqueta adecuadamente por jar tarea, que es todo lo que se necesita para que un archivo jar se convierta en un plugin de Maven, AFAIK. Además, creo, "maven-plugin-annotations" se debe utilizar en un complemento.

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() } 
+1

Muchas gracias. Basado en esto hice la siguiente versión que no necesita el reemplazo: https://gist.github.com/fikovnik/ffc1fed1867bc7fa679aaf8e48f00c21 – fikovnik