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)?
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
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.
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!
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.