2016-05-13 9 views
1

Ich bin in einem Team, wo Maven und Gradle verwendet wird, und ich habe ein Großprojekt, die eine funktionierende Pom-Datei erstellen möchten, so dass unsere Maven-Benutzer weiterhin Maven verwenden können.Gradle verwalten Plugins auf generierten POM mit Maven-Plugin

ich dieses Problem gelöst haben, sofern ein pom mit entsprechenden Abhängigkeiten zu erzeugen, wie folgt:

build.gradle Auszug:

task createpom(dependsOn: 'build') << { 
    pom { 
     project { 
      groupId project.group 
      artifactId project.name 
      version project.version 
     } 
    }.writeTo("pom.xml") 
} 

build.finalizedBy(createpom) 

Das funktioniert gut für auf einem pom nur die Abhängigkeiten schaffen, sondern Gradle's maven plugin API scheint nicht zu unterstützen, den Inhalt des Tags <build> zu definieren, den ich brauche, um bestimmte Plugins für einen erfolgreichen Maven Build zu importieren.

Kurz gesagt, ich brauche eine der folgenden Möglichkeiten:

  • die Build-Tag in das erzeugte POM Nachverarbeitung. Ich könnte es tun, indem ich die Datei direkt manipuliere, aber lieber nicht.
  • Teilen des POM in zwei Teile, eines mit nur großen verwalteten Abhängigkeiten und eines mit nur den vom Menschen verwalteten Dingen. Leider sehe ich keine Möglichkeit, eine Pom-Abhängigkeit willkürlich nach Dateinamen zu benennen; nur Lösungen, die das Hinzufügen eines Pom-Only-Projekts oder das Verwenden von Multi-Modul-Builds beinhalten, von denen ich nicht gerne bedenke, dass ich kein gemeinsam nutzbares Eltern-Pom- oder Multi-Modul-Projekt benötige. Ich würde viel lieber etwas ähnliches wie <import>my/arbitrary/path/buildstuff.xml</import>, da alles, was wirklich zu tun ist, kleben zwei Hälften eines POM für das gleiche Projekt/Lebenszyklus zusammen.

Gibt es einen besseren Weg, dies zu erreichen als das, was ich bisher gefunden habe?

Antwort

0

Ich ging mit der XML-Tweaking-Lösung, die sich als viel eleganter erwies, als ich erwartet hatte. Umsetzung beteiligt Hinzufügen eines nicht verwalteten pom zu meinem Projektverzeichnis human verwalteten Teile des Build zu halten, und die Änderung meiner createpom Aufgabe als solche:

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 die Form eines typischen pom nimmt, minus die Bits, die meine Gradle-Build-Skript generiert.

Verwandte Themen