Vraag Gradle build.gradle naar Maven pom.xml


Ik heb een Gradle-project en ik heb al zijn afhankelijkheden nodig om te worden overgedragen en gebruikt met een ander Maven-project. Met andere woorden, hoe kan ik de pom.xml van de build.gradle genereren (of kan ik die genereren)?


43
2017-10-15 02:20


oorsprong


antwoorden:


De meest ingebouwde oplossing zou waarschijnlijk de archiveTask taak in de Maven-plug-in die een pom zal genereren in de poms map in uw build-map. http://www.gradle.org/docs/current/userguide/maven_plugin.html#sec:maven_pom_generation


11
2017-10-15 02:33



Tijdens gebruik De Maven plug-in van Gradle, de installeren taak wordt automatisch toegevoegd aan uw taken en het aanroepen ervan genereert altijd een POM-bestand.

Dus als je build.gradle bestand ziet er als volgt uit:

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

je kan bellen gradle install in zijn map vindt u in de bouwen / poms submap, een bestand genaamd pom-default.xml welke de afhankelijkheden zal bevatten. Ook zal de gebouwde JAR samen met de POM in je Maven lokale repo zijn.


52
2017-11-15 11:39



Omdat ik niets wilde installeren in mijn lokale repo, volgde ik in plaats daarvan na het lezen van documenten. Voeg je build.gradle toe

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

om het uit te voeren      gradle writeNewPom

@een paard zonder naam

gradle wordt gemaakt met groovy kan proberen toe te voegen na beëindiging} projectblok

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

heb het niet geprobeerd, wilde gok!


18
2018-06-28 05:01



Als je geen graduele installatie hebt geïnstalleerd, is de "schrijfschijftaak om dit te doen" niet erg gebruikersvriendelijk. In plaats van dit 100 MB-beest met afhankelijkheden te installeren, heb ik de filter afhankelijkheden afhankelijk gemaakt van maven-afhankelijkheden:

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"

Deze converteert

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>

De rest van pom.xml moet met de hand worden gemaakt.


7
2017-10-26 08:16