[JAVA] Commencez avec Gradle

Présentation de Gradle

Objectif

Configuration environnementale

Initialisation du projet

Exemple d'interface interactive
```shell:Interface interactive
$ gradlew init

Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Swift
Enter selection (default: Java) [1..5] 3

Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 2

Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 4

Project name (default: test): testapp
Source package (default: testapp): 
> Task :init
Get more help with your project: https://docs.gradle.org/6.1.1/userguide/tutorial_java_projects.html

BUILD SUCCESSFUL in 4m 44s
2 actionable tasks: 2 executed
```
Exemple de structure initiale du projet
```shell:Structure initiale du projet
.
├── build.gradle.kts
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
└── src
    ├── main
    │   ├── java
    │   │   └── testapp
    │   │       └── App.java
    │   └── resources
    └── test
        ├── java
        │   └── testapp
        │       └── AppTest.java
        └── resources

11 directories, 8 files
```

Gestion des dépendances

Formateur

Objet: Tâche d'analyse de code statique

Sujet principal: Test unitaire

Couverture de test

Échantillon: plein

build.gradle


plugins {
  id 'java'
  id 'com.github.sherter.google-java-format' version '0.8'
  id 'checkstyle'
  id "com.github.spotbugs" version "3.0.0"
  id 'jacoco'
}

File tollSettingsDirectory = new File("${rootProject.projectDir}/config/")

group 'org.example'
version '1.0-SNAPSHOT'

//noinspection GroovyUnusedAssignment
sourceCompatibility = 1.11

repositories {
  mavenCentral()
}

dependencies {
  implementation "org.slf4j:slf4j-api:1.7.30"
  testImplementation "org.slf4j:slf4j-api:1.7.30"
  runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
  testRuntimeOnly "ch.qos.logback:logback-classic:1.2.3"

  testImplementation "org.junit.jupiter:junit-jupiter-api:5.6.0"
  testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.6.0"
}

test {
  useJUnitPlatform()
}

checkstyle {
  toolVersion = '8.29'
  configFile = rootProject.file(new File(tollSettingsDirectory.toString(), "checkstyle/checkstyle.xml").toString())
}

spotbugs {
  toolVersion = "3.1.12"
  excludeFilter = rootProject.file(new File(tollSettingsDirectory.toString(), "spotbugs/exclude_filter.xml").toString())
}

jacoco {
  toolVersion = "0.8.5"
  reportsDir = file("${buildDir}/JacocoReports")
}
jacocoTestReport {
  reports {
    html.destination file("${buildDir}/JacocoReports/html")
  }
}
jacocoTestReport.shouldRunAfter(test)

À propos de la construction du fichier Jar

Post-scriptum 2020/02/28:

Puisqu'il y avait une histoire qu'il est difficile d'utiliser dans la version car la dépendance n'est pas incluse lors de la construction du fichier Jar, je vais l'ajouter. Il est difficile de placer manuellement la bibliothèque même si elle est gérée par maven2. Alors, référez-vous aux informations de référence et installez Gradle Shadow Plugin. (Dans le cas de WAR, le plug-in officiel WAR semble bon. Je ne connais pas EAR) Dans ce cas, n'est-il pas pris dans la licence (redistribution)? Cette Vérifions-le correctement.

build.gradle


plugins {
    id 'com.github.johnrengelman.shadow' version '5.2.0'
}

Ajoutez une classe qui implémente le point d'entrée main () à Manifest.

Exemple de classe avec un point d'entrée


public class Main {
    public static void main(String[] args){
        //Je fais quelque chose.
        new HelloWorld().execute();
    }
}

build.gradle


jar {
  manifest {
    attributes "Main-Class" : "Main" //Nom complet du package.nom de la classe
  }
}

Construisez avec la tâche shadowJar. Il semble hériter des paramètres de la tâche Jar par défaut.

$ java -jar ./build/libs/sample_tdd-1.0-SNAPSHOT-all.jar 
Hello, World!

référence:

référence

Recommended Posts

Commencez avec Gradle
Démarrez avec Spring Boot
Commençons par la programmation parallèle
Comment démarrer avec Slim
J'ai essayé de démarrer avec Web Assembly
Commençons par Java - Créez un environnement de développement ②
Utiliser ProGuard avec Gradle
Test d'intégration avec Gradle
Premiers pas avec DBUnit
Installez Gradle sur ubuntu16.04
Premiers pas avec Ruby
Comment démarrer avec Eclipse Micro Profile
Peut-être que ça marche! Commençons avec Docker!
Premiers pas avec Swift
Les débutants de Rails ont essayé de se lancer avec RSpec
Utilisez jlink avec gradle
J'ai essayé de démarrer avec Gradle sur Heroku
J'ai essayé de démarrer avec Spring Data JPA
Présentation de «Introduction à la programmation pratique de la rouille» (jour 3)
Commencez avec Java sans serveur avec le framework léger Micronaut!
Créer un multi-projet Java avec Gradle
Premiers pas avec le traitement Doma-Annotation
Premiers pas avec Java Collection
Pot Gradle + Kotlin-Generate avec DSL
Premiers pas avec JSP et servlet
Premiers pas avec les bases de Java
Premiers pas avec Spring Boot
Utilisez log4j2 avec YAML + Gradle
Hello World avec SpringBoot / Gradle
Premiers pas avec les modules Ruby
Il est maintenant temps de commencer avec l'API Stream
Comment démarrer avec JDBC en utilisant PostgresSQL sur MacOS
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
Construire un projet Java avec Gradle
Revue de code facile pour démarrer avec Jenkins / SonarQube: analyse statique
Gradle
Premiers pas avec Java_Chapitre 5_Exercices pratiques 5_4
J'ai essayé d'utiliser JOOQ avec Gradle
Couverture de test de sortie avec Clover + Gradle
Obtenez des résultats de validation avec Spring Boot
[Google Cloud] Premiers pas avec Docker
Obtenir des colonnes de tables associées avec JPA
Premiers pas avec Docker avec VS Code
Mémo à obtenir avec Struts2 + Ajax
Développer le traitement avec IntelliJ + Kotlin + Gradle
La coopération des messages a commencé avec Spring Boot
Présentation de «Introduction à la programmation pratique de Rust» (jour 4) Appel de Rust depuis Ruby
(Mémo) Obtenez un ensemble de jars de bibliothèque dépendants à l'aide de Gradle
[Java] Obtenir des éléments List / Map avec Iterator
[Java] Créer un module exécutable avec Gradle
Premiers pas avec Ruby pour les ingénieurs Java
[J'obtiens] Jusqu'au déploiement avec SAM CLI
Contactez Eclipse MicroProfile Health