Gradle build.gradle para Maven pom.xml

Eu tenho um projeto Gradle e preciso que todas as suas dependencies sejam transferidas e usadas com outro projeto Maven. Em outras palavras, como posso gerar (ou posso gerar) o pom.xml a partir do build.gradle?

A solução mais integrada provavelmente seria usar a tarefa archiveTask no Maven Plugin, que gerará um pom na pasta poms em seu diretório de criação. http://www.gradle.org/docs/current/userguide/maven_plugin.html#sec:maven_pom_generation

Ao usar o plugin Maven do Gradle , a tarefa de instalação é automaticamente adicionada às suas tarefas, e a chamada sempre gerará um arquivo POM.

Então, se o seu arquivo build.gradle se parece com isto:

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

você pode chamar gradle install em sua pasta, você encontrará na subpasta build / poms , um arquivo chamado pom-default.xml que conterá as dependencies. Além disso, o JAR construído junto com o POM estará em seu repository local do Maven.

Como eu não queria instalar nada no meu repository local, eu fiz o seguinte, em vez disso, depois de ler os documentos. Adicione em seu 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") } 

para executá-lo gradle writeNewPom

@um cavalo sem nome

Gradle sendo feito com groovy pode tentar adicionar depois de terminar} bloco de projeto

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

não tentei adivinhar!

Quando você não tem gradle instalado o “write gradle tarefa para fazer isso” não é muito userful.Em vez de instalar este animal de 100MB com dependecies eu fiz o filtro de conversão de dependencies gradle para dependencies 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" 

Isso converte

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

para dentro

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

O resto do pom.xml deve ser criado manualmente.