web-dev-qa-db-de.com

Gradle build.gradle zu Maven pom.xml

Ich habe ein Gradle-Projekt und ich muss alle Abhängigkeiten übertragen und mit einem anderen Maven-Projekt verwenden. Mit anderen Worten, wie kann ich die Datei pom.xml aus der Datei build.gradle generieren (oder generieren)?

51
htm01

Die am besten integrierte Lösung wäre wahrscheinlich die Verwendung der Task archiveTask im Maven-Plugin, mit der ein POM im Ordner poms in Ihrem Erstellungsverzeichnis generiert wird. http://www.gradle.org/docs/current/userguide/maven_plugin.html#sec:maven_pom_generation

12
Matt Whipple

Wenn Sie Gradle's Maven-Plugin verwenden, wird die Installationsaufgabe automatisch zu Ihren Aufgaben hinzugefügt und beim Aufrufen wird immer eine POM-Datei generiert .

Also, wenn Ihre build.gradle Datei so aussieht:

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'
}

du kannst anrufen gradle install In seinem Ordner finden Sie im Unterordner build/poms eine Datei namens pom-default. xml , das die Abhängigkeiten enthält. Außerdem befindet sich die erstellte JAR zusammen mit dem POM in Ihrem lokalen Maven-Repo.

61
csaba.sulyok

Da ich in meinem lokalen Repo nichts installieren wollte, folgte ich stattdessen nach dem Lesen der Dokumente. Fügen Sie in Ihrem build.gradle hinzu

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")
}

um es laufen zu lassen gradle writeNewPom

@ein Pferd ohne Name

gradle, das mit Groovy erstellt wurde, kann versuchen, nach dem Beenden des Projektblocks einzufügen

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

habe es nicht versucht, wilde Vermutung!

18
dilbertside

Wenn Sie keinen Gradle installiert haben, ist die "Write Gradle Task to Do This" nicht sehr benutzerfreundlich.

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"

Dies konvertiert

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 der Datei pom.xml sollte von Hand erstellt werden.

12
andrej