[Gradle] Construisez un projet Java avec une configuration différente de la convention

Aperçu

Gradle incorpore l'idée de conventions, donc ce n'est pas la structure de dossier par défaut Impossible de créer le projet. Cependant, dans Gradle, en modifiant la configuration et les propriétés Il est possible de modifier ces règles de manière flexible.

Approche de la propriété

À titre d'exemple, modifiez la convention d'allocation des sources et des ressources Java dans l'ensemble de sources principal.

Cette fois, créez un projet avec la configuration suivante.

Structure du projet


<project-root>
└ src
    ├ Mapping.xml
    ├ app.properties
    └ examples
        └ Dummy.java

Dans Gradle, la source Java se trouve dans le répertoire src / main / java, Les ressources devraient se trouver dans le répertoire src / main / resources.

Cependant, dans le projet ci-dessus, les sources et les ressources Java sont regroupées dans le répertoire src. Par conséquent, en définissant la source Java et le chemin de placement des ressources dans le script de construction Créez un projet qui ne respecte pas les conventions par défaut.

apply plugin: 'java'

sourceSets {
    main {
        java {
            // sourceSets.main.java.Ajout de paramètres à la propriété srcDirs
            // =Définir l'emplacement de la source Java
            srcDir 'src'
        }
        resources {
            // sourceSets.test.java.Ajout de paramètres à la propriété srcDirs
            // =Définir la destination de l'emplacement des ressources
            srcDir 'src'
        }
    }
}

processResources {
    // .Exclure les répertoires qui ne contiennent rien d'autre que des fichiers java de la copie
    includeEmptyDirs = false
}

Approche depuis la configuration

Qu'est-ce que la configuration?

L'intention est une unité de regroupement et de classification des dépendances. En réalité, seul le chemin référencé par la tâche (= cible de traitement de la tâche) est défini.

Les configurations de plug-in Java incluent:

Utilisation de la configuration

Par exemple, si vous souhaitez définir une dépendance de bibliothèque, Supposons que vous souhaitiez appliquer les ajouts de bibliothèque JUnit uniquement aux tâches liées aux tests. Dans ce cas, pour définir les dépendances de bibliothèque uniquement pour la tâche compileTestJava Définissez les paramètres de la configuration testCompile.

dependencies {
    testCompile 'junit:junit:4.11'
}

Approche depuis l'ensemble source

Ajouter un ensemble de sources

Vous pouvez ajouter un ensemble de sources en écrivant ce qui suit dans le script de construction.

sourceSets {
    exampleSet {
        java.srcDir file('src/example/java')
    }

Configuration ajoutée automatiquement

Lorsque vous ajoutez un ensemble source, les configurations suivantes sont automatiquement ajoutées.

Pour définir la configuration ci-dessus, écrivez ce qui suit dans le script de construction.

sourceSets {
    exampleSet {
        compileClasspath = 'src/ex/java'
        runtimeClasspath = 'build/ex/classes'
    }
}

Tâches ajoutées automatiquement

Lorsque vous ajoutez un ensemble source, les tâches suivantes sont automatiquement ajoutées.

Ajouter une tâche

Ci-dessous, par l'ajout d'un ensemble source (integrationTest) pour effectuer des tests d'intégration Essayez d'ajouter une tâche de type Test.

sourceSets {
    integrationTest {
        //Code de test pour le test d'intégration (source Java)Définir la destination de l'emplacement de
        java.srcDir file('src/intTest/java')
        //Reportez-vous à la classe de sortie du jeu de sources principal et au chemin de classe au moment de la compilation du jeu de sources de test au moment de la compilation.
        compileClasspath = sourceSets.main.output + configration.testCompile
        //Se référer à sa propre classe de sortie au moment de l'exécution, au chemin de classe au moment de la compilation et au même chemin de classe qu'au moment de l'exécution de l'ensemble de sources de test
        runtimeClasspath = output + compileClasspath + configradion.testCompile
    }
}

task doIntegrationTest(type: Test) {
    //Tester la sortie de l'intégration de l'ensemble source
    testClassDir = sourceSets.integrationTest.output.classDir

    //Définissez le chemin d'exécution IntegrationTest dans le chemin de classe lors de l'exécution du test
    classpath = sourceSets.integrationTest.runtimeClasspath

référence

Cet article est rédigé en référence aux livres suivants.

Ouvrage de référence: [Présentation approfondie de Gradle] Construire une plate-forme automatisée avec des outils de construction de nouvelle génération](https://www.shoeisha.co.jp/book/detail/9784798136431)

Recommended Posts

[Gradle] Construisez un projet Java avec une configuration différente de la convention
Construire un projet Java avec Gradle
[Java] [Play Framework] Jusqu'à ce que le projet soit démarré avec Gradle
Je veux renvoyer un type différent de l'élément d'entrée avec Java8 StreamAPI Reduce ()
Application Java CICS-Run - (3) Gestion de build avec Gradle
Créez et testez des applications Java + Gradle avec Wercker
En utilisant Gradle avec VSCode, compilez Java → exécutez
Créez des projets Spring Boot par environnement avec Gradle
Conseils Java - Créez un projet Spring Boot avec Gradle
Ajouter un projet dans n'importe quel dossier avec Gradle
Créer un environnement de développement Java avec VS Code
[Note] Java: créez un projet simple tout en apprenant comment fonctionne le fichier de paramètres.
Créer un environnement VS Code + WSL + Java + Gradle à partir de zéro
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
java construire un triangle
Construction de premier niveau (Java)
Utilisation de la base de données (SQL Server 2014) à partir d'un programme Java 04/01/2018
[Note] Créez un environnement Java à partir de zéro avec docker
Vérifiez la couverture avec Codecov dans la configuration Java + Gradle + Wercker
Construire Java avec Wercker
Jusqu'à ce que vous construisiez un projet écrit scala avec Maven et que vous l'exécutiez avec la commande scala.
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
Créer un multi-projet Java avec Gradle
Utilisation de Docker depuis Java Gradle
Avec [AWS] CodeStar, vous pouvez créer un projet Spring (Java) s'exécutant sur Lambda en seulement 3 minutes! !!
AWS Elastic Beanstalk # 1 avec Java à partir de zéro - Création d'un environnement d'application Web Java à l'aide de l'interface de ligne de commande EB-
Créez un serveur Web simple avec la bibliothèque standard Java com.sun.net.httpserver
Essayez HelloWorld avec la configuration minimale de Heroku Java spring-boot
Accédez à la grille de données en mémoire Apache Ignite à partir d'un client Java
Remplacer par une valeur selon la correspondance avec une expression régulière Java
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
[Java] De la création d'un nouveau projet à la réalisation automatique de test / construction / déploiement
L'histoire de rendre possible la construction d'un projet qui a été construit par Maven avec Ant
Vous ne pouvez pas changer la version de facette du projet d'un module Web dynamique à x.x. Comment faire avec
Créer un environnement Node.js avec Docker
Créer un environnement Tomcat 8.5 avec Pleiades 4.8
Coder Java depuis Emacs avec Eclim
Exécuter le fichier de commandes à partir de Java
Créer une application Web avec Javalin
Créer un projet Java à l'aide d'Eclipse
Construire Java avec Mac vs Code
Suivez le lien avec Selenium (Java)
Travailler avec des feuilles de calcul Google à partir de Java
La route de JavaScript à Java
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java [décoction n ° 2]
Une collection de phrases qui impressionne le "sentiment différent" de Java et de JavaScript
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
Exprimons le résultat de l'analyse du code d'octet Java dans un diagramme de classes
[Java] Créez un fichier jar compressé et non compressé avec la commande jar
Je ne peux pas construire si je définis la destination de construction sur un simulateur avec XCode12!
Essayez de créer une configuration de type Liverpro avec Keycloak (édition Security Proxy)
<java> Fractionner l'adresse avant et après l'adresse avec une expression régulière