Dernière modification : Dec 08 , 2024

Content

Plugins recommandés

Nous recommandons les plugins:

| Plugin Maven | Plugin Gradle | | ------------------------ | ---------------------------------------------------------------------- | | maven-compiler-plugin | java | | maven-deploy-plugin | maven-publish, signing | | sonarqube | id "org.sonarqube" version "3.2.0" id("org.sonarqube") version "3.2.0" | | maven-javadoc-plugin | java-library | | maven-checkstyle-plugin | checkstyle | | buildnumber-maven-plugin | Custom task required | | maven-shade-plugin | application or id 'com.github.johnrengelman.shadow' version '7.0.0' | | ssh-wagon-plugin | id ' org.hidetake.ssh ' version ' x.y.z ' |

Clone du projet

Nous allons cloner le projet lien pour tenter la migration de ce projet en Gradle.

Création de la base du projet

  • Créer un fichier build.gradle et settings.gradle et gradle.properties

Ajouter le wrapper gradle

Déclarer le nom du projet

Pour information, le nom du projet est déclaré dans settings.gradle

Vérifier avec gradle tasksque le nom a bien été pris en compte.

Déclarer deux propriétés pour groupId et version

Reproduire les valeurs de groupId et version du projet Maven dans la configuration Gradle.

Astuce : les valeurs peuvent être reproduites dans gradle.properties et l'affectation dans build.gradle.

Plus de détails sur OReilly. et DSL

Identifier le type de projet Maven

Est-ce un projet Maven de type library , application ou bien WAR ou autre ?

Appliquer notre premier plugin, application

Nous allons utiliser le plugin application fourni par Gradle.

plugins {
    id 'application'
}

Rappel, un plugin peut importer d'autres plugins, une astuce est d'utiliser :

project.plugins.each {
   println it
}

Définissez le chemin vers la classe qui sera exécutée :

application {
    mainClass = 'nomClasse'
}

Ajout des dépendances

  • Créer un répertoire gradle pour déclarer le catalogue de versions pour la gestion de dépendances voir la documentation.

Exemple libs.versions.toml (voir DSL TOML)

  • Ajouter le repository Maven Central et Maven Local
  • Ajouter une balise dependencies
  • Déclarer le catalogue de versions
dependencyResolutionManagement {
    versionCatalogs {
        libs {
            from(files("./gradle/libs.version.toml"))
        }
    }
}
  • Ajouter les dépendances en faisant attention aux configurations.

Voici une liste de liens utiles :

Configuration du compilateur Java

Reportez la configuration du compilateur Java depuis Maven en suivant la documentation compilateur java et Building java projects.

Configuration du plugin Javadoc

Suivre la documentation de cette page pour générer la Javadoc.

### Mettre à jour le packaging

Déclarer que le packaging doit inclure les sources et la javadoc en suivant.

Utiliser également cette section pour déclarer le uber jar.

Bonus : installer Checkstyle

Suivre la documentation pour migrer le plugin checkstyle.

### Bonus : installer SpotBugs

Suivre la documentation pour installer le plugin SpotBugs.

## Solution


plugins {
    id 'application'
    id 'java'
}


project.plugins.each {
   println it
}


group=GROUP_ID
version=VERSION


java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(8)
    }
    withJavadocJar()
    withSourcesJar()

}



configurations {
    asciidoclet
}

dependencies {
    asciidoclet 'org.asciidoctor:asciidoclet:1.+'
}

tasks.register('configureJavadoc') {
    doLast {
        javadoc {
            options.doclet = 'org.asciidoctor.Asciidoclet'
            options.docletpath = configurations.asciidoclet.files.toList()
        }
    }
}

javadoc {
    dependsOn configureJavadoc
}



tasks.register('uberJar', Jar) {
    archiveClassifier = 'uber'

    from sourceSets.main.output

    dependsOn configurations.runtimeClasspath
    from {
        configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) }
    }
}

dependencies {
    testImplementation libs.bundles.junit
}


application {
    mainClass = 'org.pirola.maven.example.MavenExample'
}

Settings.gradle:


pluginManagement {
    repositories {
        gradlePluginPortal()
    }
}

rootProject.name="maven-example-project-for-java"

dependencyResolutionManagement {
    repositories {
        mavenCentral()
        mavenLocal()
    }
    versionCatalogs {
        libs {
            from(files("./gradle/libs.version.toml"))
        }
    }
}

gradle.properties :

GROUP_ID=org.pirola.maven.example
VERSION=2.0

libs.version.toml:

[versions]
junit = "4.12"

[libraries]
junit_lib = { module = "junit:junit", version.ref = "junit" }

[bundles]
junit = ["junit_lib"]

[plugins]
#versions = { id = "com.github.ben-manes.versions", version = "0.45.0" }