2012-06-26 15 views

risposta

-1

Al momento quella funzione non è supportata ma è su development roadmap. Controllare lo roadmap dashboard di tanto in tanto per vedere se lo stato è cambiato.

+1

Il nostro obiettivo è più di supportare il _reuse_ dei plugin Maven di Gradle, piuttosto che il supporto per _build_li. –

+0

Capisco. Penso di aver letto male la domanda. –

+0

collegamento cruscotto roadmap non è più attivo – Matthew

0

Non sono a conoscenza di un plug-in Gradle di terze parti che consente di creare plug-in Maven. Una possibilità sarebbe quella di chiamare Maven per fare una parte del lavoro (in particolare la generazione dei metadati). Il POM necessario potrebbe essere creato al volo. Un'altra possibilità sarebbe quella di trasferire i metadati al controllo del codice sorgente e aggiornarli manualmente (possibilmente eseguendo Maven quando necessario). Ultimo ma non meno importante, potresti scrivere del codice che esegue la generazione dei metadati sul lato Gradle, eventualmente riutilizzando del codice Maven.

+0

Peccato che non sia pianificato. Vediamo se si presenta una buona soluzione ... –

3

Here's something che ha funzionato per me:

  • Dopo la compilazione fonti del plugin generare POM del progetto: "install.repositories.mavenInstaller.pom.writeTo('pom.xml')"
  • Patch POM generato e fornire plugin le coordinate e le directory di destinazione corretta
  • Run "mvn org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor"

In questo modo "build/classes/main/META-INF/maven/plugin.xml" viene creato e quindi imballato correttamente daAttività, che è tutto ciò che è necessario per un file jar per diventare un plugin Maven, AFAIK. Inoltre, credo che "maven-plugin-annotations" debba essere utilizzato in un plug-in.

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

Grazie mille. Sulla base di questo ho fatto la seguente versione che non ha bisogno della sostituzione: https://gist.github.com/fikovnik/ffc1fed1867bc7fa679aaf8e48f00c21 – fikovnik