Gradle build.gradle à Maven pom.xml

J’ai un projet Gradle et toutes mes dépendances doivent être transférées et utilisées avec un autre projet Maven. En d’autres termes, comment puis-je générer (ou puis-je générer) le fichier pom.xml à partir de build.gradle?

La solution la plus intégrée consisterait probablement à utiliser la tâche archiveTask dans le plug-in Maven pour générer un pom dans le dossier poms de votre répertoire de construction. http://www.gradle.org/docs/current/userguide/maven_plugin.html#sec:maven_pom_generation

Lors de l’utilisation du plug – in Maven de Gradle , la tâche d’ installation est automatiquement ajoutée à vos tâches, et l’appel à cette tâche génère toujours un fichier POM.

Donc, si votre fichier build.gradle ressemble à ceci:

 apply plugin: 'java' apply plugin: 'maven' group = 'myGroup' // artifactId is taken by default, from folder name version = '0.1-SNAPSHOT' dependencies { comstack 'commons-lang:commons-lang:2.3' } 

vous pouvez appeler gradle install dans son dossier, vous trouverez dans le sous-dossier build / poms , un fichier appelé pom-default.xml qui contiendra les dépendances. De plus, le JAR construit avec le POM sera dans votre repo local Maven.

Comme je ne voulais rien installer dans mon repo local, j’ai plutôt suivi, après avoir lu des documents. Ajouter dans votre build.gradle

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

pour l'exécuter, gradle writeNewPom

@un cheval sans nom

gradle être fait avec groovy peut essayer d'append après la fin} bloc de projet

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

n'a pas essayé, devine sauvage!

Lorsque vous n’avez pas installé la tâche “écrire le dégradé pour ce faire” n’est pas très pratique.

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

Cela convertit

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

dans

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

Le rest de pom.xml devrait être créé à la main.