Tengo un proyecto de Gradle y necesito que todas sus dependencias se transfieran y utilicen con otro proyecto de Maven. En otras palabras, ¿cómo puedo generar (o puedo generar) el pom.xml de build.gradle?
La solución más incorporada probablemente sea usar la tarea archiveTask
en Maven Plugin que generará un pom en la carpeta poms
en su directorio de comstackción. http://www.gradle.org/docs/current/userguide/maven_plugin.html#sec:maven_pom_generation
Al usar el plugin Maven de Gradle , la tarea de instalación se agrega automáticamente a sus tareas, y al llamarla siempre se generará un archivo POM.
Entonces, si su archivo build.gradle se ve así:
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' }
puede llamar a gradle install
en su carpeta, encontrará en la subcarpeta build / poms , un archivo llamado pom-default.xml que contendrá las dependencias. Además, el JAR construido junto con el POM estará en su repository local de Maven.
Como no quería instalar nada en mi repository local, sí lo hice después de leer documentos. Agregue en su 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") }
ejecutarlo gradle writeNewPom
@un caballo sin nombre
gradle está hecho con groovy puede intentar agregar después de terminar} project block
build{ plugins{ plugin{ groupId 'org.apache.maven.plugins' artifactId 'maven-compiler-plugin' configuration{ source '1.8' target '1.8' } } } }
no lo intenté, supongo!
Cuando no tiene instalado gradle, la “tarea de escribir gradle para hacer esto” no es muy útil. En lugar de instalar esta bestia de 100MB con dependencias, hice el filtro convirtiendo las dependencias de gradle en dependencias de 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:]\.]*\)/\n\t\1<\/groupId>\n\t\2<\/artifactId>\n\t\3<\/version>\n<\/dependency>/g"
Esto convierte
compile 'org.slf4j:slf4j-api:1.7.+' compile 'ch.qos.logback:logback-classic:1.1.+' compile 'commons-cli:commons-cli:1.3'
dentro
org.slf4j slf4j-api 1.7.+ ch.qos.logback logback-classic 1.1.+ commons-cli commons-cli 1.3
El rest de pom.xml debe crearse a mano.