web-dev-qa-db-fra.com

Graduez build.gradle à Maven pom.xml

J'ai un projet Gradle et j'ai besoin que toutes ses dépendances soient 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 pom.xml à partir du build.gradle?

51
htm01

La solution la plus intégrée consisterait probablement à utiliser la tâche archiveTask du plug-in Maven, qui générera 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

12
Matt Whipple

Lors de l'utilisation de plugin Gradel's Maven , la tâche d'installation est automatiquement ajoutée à vos tâches et son appel 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 {
  compile 'commons-lang:commons-lang:2.3'
}

tu peux 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 fichier JAR ainsi que le fichier POM seront dans votre dépôt Maven local.

61
csaba.sulyok

Comme je ne voulais rien installer dans mon référentiel local, j'ai suivi, après avoir lu la documentation, à la place. 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

une note faite avec groovy peut essayer d’ajouter après la fin du} bloc de projet

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

je n'ai pas essayé, je suppose!

18
dilbertside

Lorsque vous n'avez pas installé de dégradé, la tâche "écrire sur le dégradé" n'est pas très conviviale. Au lieu d'installer cette bête de 100 Mo avec dépendances, j'ai créé le filtre qui convertit les dépendances de gradables en dépendances 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:]\.]*\)/<dependency>\n\t<groupId>\1<\/groupId>\n\t<artifactId>\2<\/artifactId>\n\t<version>\3<\/version>\n<\/dependency>/g"

Cela convertit

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

dans

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

Le reste de pom.xml doit être créé à la main.

12
andrej