2012-10-15 15 views
40

Ich habe ein Gradle-Projekt und ich brauche alle seine Abhängigkeiten, um übertragen und mit einem anderen Maven-Projekt verwendet zu werden. Mit anderen Worten, wie kann ich die pom.xml von build.gradle erzeugen (oder kann ich sie erzeugen)?Gradle build.gradle zu Maven pom.xml

Antwort

46

Wenn Gradle's Maven plugin verwenden, das ist installieren Aufgabe zu Ihren Aufgaben automatisch hinzugefügt, und es ruft immer eine POM-Datei generieren.

Also, wenn Ihr build.gradle Datei sieht wie folgt aus:

apply plugin: 'java' 
apply plugin: 'maven' 

group = 'myGroup' 
// artifactId is taken by default, from folder name 
version = '0.1-SNAPSHOT' 

dependencies { 
    compile 'commons-lang:commons-lang:2.3' 
} 

Sie gradle install in ihrem Ordner aufrufen können, werden Sie in der build/Poms Unterordner finden, eine Datei namens POM- default.xml, die die Abhängigkeiten enthält. Auch das gebaute JAR zusammen mit dem POM wird in Ihrem Maven lokalen Repo sein.

+0

Dies sollte die "offizielle" Möglichkeit sein, POM zu generieren und Artefakte lokal zu installieren, insbesondere wenn Sie eine Reihe von älteren POM-basierten Modulprojekten konvertieren. –

18

Da ich in meinem lokalen Repo nichts installieren wollte, habe ich stattdessen nach dem Lesen von Dokumenten gefolgt. in Ihrem build.gradle hinzufügen

apply plugin: 'maven' 

group = 'com.company.root' 
// artifactId is taken by default, from folder name 
version = '0.0.1-SNAPSHOT' 

task writeNewPom << { 
    pom { 
     project { 
      inceptionYear '2014' 
      licenses { 
       license { 
        name 'The Apache Software License, Version 2.0' 
        url 'http://www.apache.org/licenses/LICENSE-2.0.txt' 
        distribution 'repo' 
       } 
      } 
     } 
    }.writeTo("pom.xml") 
} 

es laufen gradle writeNewPom

@a_horse_with_no_name

gradle wird mit groovigen gemacht kann versuchen nach Beendigung} Projekt Block hinzufügen

build{ 
    plugins{ 
    plugin{ 
     groupId 'org.apache.maven.plugins' 
     artifactId 'maven-compiler-plugin' 
     configuration{ 
      source '1.8' 
      target '1.8' 
     } 
    } 
    } 
} 

habe nicht versucht, wild rate!

+1

Danke, dilbertside. Wie ein Charme, in meinem Fall) – WebComer

+1

Dies schreibt nur die JARs in die POM, aber erstellt kein komplettes Projekt, das auch die Quellen aus dem Projekt enthält. Wie bekomme ich das Maven-Plugin, um auch die Quell- (und Text-, Ressourcen- ...) Verzeichnisse in das POM zu schreiben? –

+0

@dilbertside Arbeitete für mich. Vielen Dank. –

7

Wenn Sie kein gradle installiert haben die „gradle Aufgabe schreiben, dies zu tun nicht sehr userful ist Statt mit dependecies dieses 100MB Tier der Installation ich den Filter Umwandlung gradle Abhängigkeiten gemacht Abhängigkeiten maven.

cat build.gradle\ 
| awk '{$1=$1};1'\ 
| grep -i "compile "\ 
| sed -e "s/^compile //Ig" -e "s/^testCompile //Ig"\ 
| sed -e "s/\/\/.*//g"\ 
| sed -e "s/files(.*//g"\ 
| grep -v ^$\ 
| tr -d "'"\ 
| sed -e "s/\([-_[:alnum:]\.]*\):\([-_[:alnum:]\.]*\):\([-+_[:alnum:]\.]*\)/<dependency>\n\t<groupId>\1<\/groupId>\n\t<artifactId>\2<\/artifactId>\n\t<version>\3<\/version>\n<\/dependency>/g" 

Dieser wandelt

compile 'org.slf4j:slf4j-api:1.7.+' 
compile 'ch.qos.logback:logback-classic:1.1.+' 
compile 'commons-cli:commons-cli:1.3' 

in

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.+</version> 
</dependency> 
<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>1.1.+</version> 
</dependency> 
<dependency> 
    <groupId>commons-cli</groupId> 
    <artifactId>commons-cli</artifactId> 
    <version>1.3</version> 
</dependency> 

Der Rest von pom.xml sollte von Hand erstellt werden.

Verwandte Themen