221 votes

Alternative de Gradle à mvn install

J'ai 2 projets différents construits sur mvn. J'essaie de les remplacer par Gradle.

Le projet 1 est un SDK, et le projet 2 utilise ce SDK (exemple).

Dans le cas de maven, il crée un artefact à l'aide de mvn install qui ajoute l'ensemble du projet dans le référentiel local.

J'aime travailler avec gradle comme ça. Par exemple, le projet 1 build.gradle doit être publié en tant que dépôt local gradle et ensuite le projet exemple doit l'utiliser.

Dans maven nous faisons mvn install qui ajoute un artefact de projet dans le dossier .m2 mais comment faire dans gradle pour que je puisse ajouter un artefact de projet dans le dépôt local.

Y a-t-il un moyen de le faire ?

201voto

Peter Niederwieser Points 36369

sdk/build.gradle :

apply plugin: "maven"

group = "foo"
version = "1.0"

example/build.gradle :

repositories {
    mavenLocal()
}

dependencies {
    compile "foo:sdk:1.0"
}

$sdk> gradle install

$example> gradle build

136voto

Miguel Reyes Points 1724

Vous êtes peut-être à la recherche de :

gradle publishToMavenLocal

build.gradle :

plugins {
    // other plugins
    id 'maven-publish'
}

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
}

Voir : Plugin Maven Publish

10voto

csaba.sulyok Points 376

Vérifier Documentation de Gradle sur les constructions multi-projets .

Voici un exemple, avec quelques dépendances supplémentaires. Il suffit d'appeler gradle install dans le dossier Root, et tout sera construit et placé dans votre répertoire local.

Structure du dossier :

root
+--> build.gradle
+--> settings.gradle
+--> sdk
|    +--> build.gradle
+--> example
     +--> build.gradle

Racine/build.gradle :

allprojects {
  apply plugin: 'java'
  apply plugin: 'maven'

  group = 'myGroup'
  version = '0.1-SNAPSHOT'
}

Root/settings.gradle :

include 'sdk'
include 'example'

Racine/sdk/build.gradle :

dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}

Racine/exemple/build.gradle :

dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}

8voto

Oleksandr Shpota Points 3265

Vous devez publier votre propre bibliothèque dans votre dépôt local. Vous pouvez le faire de la manière suivante :

  1. Ajouter maven-publish plugin :

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. Ajoutez la section de publication à votre fichier de construction :

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
  3. Exécuter gradle build publishToMavenLocal

    Pour plus de détails, voir la documentation .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X