Nous n'avons jamais utilisé d'outils de construction dans notre projet, nous avons donc résumé Maven pour l'implémentation. Cet article est conçu pour vous donner les informations dont vous avez besoin pour vous comprendre et les déployer auprès des membres de votre projet. De plus, puisque Maven3 est utilisé, la description est basée sur cela.
Maven est un outil de gestion de projet qui peut contrôler l'exécution des constructions de programmes Java (gérer les bibliothèques jar, compiler, tester, générer des WAR et des JAR) et générer des rapports de résultats. Vous pouvez également étendre le plugin pour ajouter des fonctionnalités à vos builds et rapports. Maven peut contrôler des instructions détaillées en décrivant le processus que vous souhaitez exécuter dans pom.xml (Project Object Model). Par exemple, vous pouvez générer un WAR en spécifiant la version de la bibliothèque jar à utiliser ou en spécifiant des paramètres dépendants de l'environnement, tels que la destination de la connexion à la base de données.
pom.xml Je ne résumerai que les grandes lignes. Veuillez consulter Référence Maven-POM pour plus de détails. groupId / artifactId / version est une valeur de paramètre obligatoire.
élément | La description |
---|---|
groupId | Un identifiant unique pour votre organisation ou votre projet. Dans certains cas, il est défini en fonction de la structure du package du projet. |
artifactId | Nom qui identifie le projet |
version | Version du projet |
packaging | L'état des artefacts du projet. Vous pouvez spécifier war, jar, etc. |
dependencies | Bibliothèque référencée par le projet |
parent | Spécifie le POM parent à référencer. |
dependencyManagement | Définit le modèle de la bibliothèque dépendante. |
modules | Définit les modules gérés par le multi-projet. |
properties | La valeur déclarée dans cette balise est en pom${X}Vous pouvez vous y référer à. Il est utilisé lorsque vous souhaitez définir une valeur qui est généralement référencée dans un projet tel que Version JDK ou Encording. |
build | Définit le plugin à exécuter lors de la construction. |
reporting | Définit le plugin à exécuter au moment du site. |
repositories | Définit un référentiel à rechercher autrement qu'à distance. |
pluginRepositories | Définissez un référentiel Plugin uniquement que vous souhaitez rechercher en dehors de Remote. |
profiles | Définit les informations de configuration pour chaque environnement d'exécution maven. Par exemple, vous pouvez basculer l'environnement entre la production, la préparation et le développement. |
La gestion des versions du projet spécifiée par la balise version suit généralement Semantic Versioning. Autrement dit, il est représenté par "X.Y.Z (patch mineur majeur) -identifier (alpha / beta / m / rc / SNAPSHOT, etc.)". Lors de la création d'un nouveau projet Maven dans Eclipse ou IntelliJ IDEA, la version par défaut est 0.0.1-SNAPSHOT.
La résolution des dépendances est une fonctionnalité importante de Maven et gère les bibliothèques (jars externes) dont dépend votre projet. En décrivant la dépendance [dépendance] dans pom.xml, la bibliothèque requise est automatiquement téléchargée depuis le référentiel de Maven. Cette fonctionnalité élimine le besoin de télécharger vous-même les bibliothèques requises à partir du site et de les ajouter au chemin de compilation ou de vous engager dans un système de contrôle de version. Vous pouvez également éliminer les conflits de paramètres d'environnement causés par différents chemins de classe en fonction de l'environnement de développement.
Le référentiel Maven est l'endroit où les bibliothèques sont gérées. Maven téléchargera les bibliothèques requises à partir du référentiel lorsque vous exécuterez la compilation. Les artefacts de projet peuvent également être téléchargés dans le référentiel pour être utilisés par d'autres projets.
Dépôt officiel de Maven publié sur Internet. Des versions de diverses bibliothèques sont disponibles ici, et vous pouvez télécharger les bibliothèques requises localement. Dépôt central
Gérez la bibliothèque comme vous le feriez pour un référentiel central. Vous pouvez également créer votre propre référentiel distant en utilisant Sonatype NEXUS. Par exemple, les référentiels suivants sont des référentiels distants.
Un référentiel construit dans l'environnement de développement. Lorsque Maven recherche une bibliothèque, il recherche d'abord le référentiel local, et sinon, recherche le référentiel central ou le référentiel distant et le télécharge.
Le référentiel local est situé dans ~ / .m2 / repository
.
Scope
Si vous spécifiez la portée, vous pouvez spécifier l'état de la définition de la bibliothèque dans classpath. S'il n'est pas spécifié, ce sera compile
.
Scope | La description |
---|---|
compile | Défini dans classpath dans toutes les situations. |
provided | Équivaut à compiler mais non inclus dans l'artefact. Spécifiez ceci lorsque la bibliothèque est préparée principalement du côté de l'environnement où les artefacts tels que JDK et l'API Servlet sont déployés. |
runtime | Il est inclus dans l'artefact de la bibliothèque requis lors de l'exécution de l'artefact. |
test | Test Une bibliothèque qui doit être compilée et exécutée lorsque le code est exécuté. JUnit et Mockito sont applicables. Il n'est pas inclus dans les livrables. |
system | Équivalent à fourni, mais la bibliothèque n'est pas un référentielsystemPath Fait référence au chemin spécifié dans. |
Le processus exécuté par Maven est appelé "objectif" pour chaque fonction.
Le "goal" est fourni par le plugin et s'exécute sous mvn plugin name: Goal name
.
Un plug-in a plusieurs objectifs.
Chez Maven, ce que vous voulez faire s'appelle une «phase».
Plusieurs "buts" sont liés à une phase, et si vous exécutez la phase que vous voulez exécuter avec le nom de phase mvn
, les" buts "liés à la" phase "seront exécutés dans l'ordre.
L'ordre dans lequel les phases sont exécutées est déterminé par le cycle de vie décrit plus loin.
Les builds Maven exécutent un nombre défini de "phases" en séquence en fonction de leur cycle de vie. Il y a trois cycles de vie définis
C'est littéralement un cycle de vie standard. Puisqu'il y a 23 Phases au total, seules les Phases principales seront expliquées ici. (La phase non décrite sera le prétraitement de la phase suivante et le post-traitement de la phase précédente.) "Artéfact" fait référence à la guerre, au pot, etc.
No. | Phase | Aperçu |
---|---|---|
1 | validate | Vérifier la légitimité du projet |
7 | compile | Compiler le projet |
15 | test | Exécuter un test unitaire |
17 | package | Création de livrables (packaging) |
21 | verify | Vérification des livrables |
22 | install | Placer les artefacts dans le référentiel local |
23 | deploy | Placer des artefacts dans un référentiel distant |
Par exemple, l'exécution de mvn package
exécute 17 phases de la validation au package et génère des artefacts.
L'exécution jusqu'à mvn deploy
exécutera les 23 phases de la validation au déploiement.
Le cycle de nettoyage est un cycle de vie pour la suppression des fichiers temporaires générés par une compilation. Les fichiers temporaires sont des fichiers de classe et de ressources générés localement, tels que la compilation et le test. (Dans un projet Maven normal, le fichier est sorti dans le répertoire cible)
C'est une bonne idée de toujours exécuter propre avant d'exécuter la compilation dans le cycle par défaut, car les fichiers temporaires restants lors de la reconstruction peuvent être réutilisés.
Exemple mvn clean package
No. | Phase | Aperçu |
---|---|---|
1 | pre-clean | Prétraitement pour la suppression de fichiers temporaires |
2 | clean | Supprimer les fichiers temporaires |
3 | post-clean | Post-traitement de la suppression de fichiers temporaires |
Le cycle de vie du site génère la documentation du projet. Par exemple, à l'aide du plug-in décrit plus loin, générez javadoc, des rapports de résultats d'analyse statique tels que les styles de contrôle et FindBugs, les résultats des tests et les rapports de couverture.
Si vous spécifiez le site en même temps que la construction et l'exécutez, le document du résultat de la construction sera généré. Exemple'mvn install site '
No. | Phase | Aperçu |
---|---|---|
1 | pre-site | Pré-traitement de la génération de documents |
2 | site | Supprimer le document |
3 | post-site | Post-traitement de la création de documents |
3 | site-deploy | Placez le document sur le serveur Web spécifié |
Les plugins sont des fonctionnalités Maven écrites en Java. Le plug-in fournit également des objectifs liés aux phases du cycle de vie. En plus de cela, divers plug-ins sont publiés et vous pouvez également créer votre propre plug-in. Veuillez vérifier le HP de chaque plug-in car l'utilisation est différente pour chaque plug-in.
Il définit principalement le plug-in que vous souhaitez exécuter dans le cycle de vie par défaut.
site Définit un plug-in pour générer un rapport d'exécution. Par exemple, vous pouvez vérifier les résultats de l'analyse statique tels que le style de vérification et trouver des bogues, et vous pouvez parcourir le javadoc du code du projet.
Dans Maven, un projet peut être géré en le divisant en "modules" pour chaque rôle et service. Par exemple, module de base, module de plugin, module de fonction commun, etc. Pour une telle configuration de projet, vous pouvez définir la configuration du module et les paramètres communs dans pom.xml du module parent qui gère l'ensemble du projet et en hériter dans pom.xml de chaque module.
Dans pom.xml, définissez ce qui suit dans le module parent du projet multi-module.
Dans le module enfant, spécifiez le groupId / artifactId / version du module parent dans la balise parent et héritez-en.
Prenons comme exemple le processus de migration d'un projet en cours de développement par un groupe vers un projet Maven.
Dans Eclipse, vous pouvez convertir un projet existant en projet Maven en sélectionnant Faites un clic droit sur le projet> Configuration> Convertir en projet Maven
, mais comme il s'agit du premier projet Maven créé, j'ai décidé de copier le module dans le projet créé à partir de zéro.
Voir Installation de Maven pour plus d'informations.
Décompressez le fichier compressé et placez le dossier bin dans la variable d'environnement PATH.
Ouvrez une invite de commande et exécutez mvn --version
pour voir les informations de version.
Ensuite, créez un dossier de travail .m2 pour Maven.
Les dossiers de travail sont généralement créés dans le répertoire utilisateur ~ / .m2
.
En outre, créez les répertoires et fichiers suivants sous le dossier de travail.
~ / .m2 / repository
C'est le répertoire qui sera le dépôt local.
~ / .m2 / setting.xml
Ceci est un fichier de configuration utilisateur.
Si vous accédez à Internet via un proxy, vous devez définir un proxy.
Décrivez comme suit dans ~ / .m2 / setting.xml
.
setting.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<proxies>
<proxy>
<id>http_proxy</id>
<active>true</active>
<protocol>http</protocol>
<username>Compte d'authentification</username>
<password>Mot de passe d'authentification</password>
<host>Adresse IP du serveur proxy</host>
<port>numéro de port du serveur proxy</port>
</proxy>
<proxy>
<id>https_proxy</id>
<active>true</active>
<protocol>https</protocol>
<username>Compte d'authentification</username>
<password>Mot de passe d'authentification</password>
<host>Adresse IP du serveur proxy</host>
<port>numéro de port du serveur proxy</port>
</proxy>
</proxies>
</settings>
~ / .m2 / setting.xml
dans les paramètres utilisateur.~ / .m2 / repository
.Cette fois, nous convertirons un projet Tomcat existant en un projet Maven. Il est géré dans la configuration multi-modules suivante.
project ├─ main module ├─ sub module1 ├─ sub module2 └─ sub module3
Créez un pom parent qui constitue le multi-module.
groupId ・ ・ ・ ・ Identifiant unique pour le projet (jp.co. nom de l'entreprise. nom du produit / com. nom du produit, etc.) artifactId ・ ・ ・ Nom d'identification du projet version ・ ・ ・ Version (Tout d'abord, la valeur par défaut 0.0.1-SNAPSHOT convient.) paquet ・ ・ ・ ** pom **
Une fois créé, vous aurez un dossier src et pom.xml. Cette fois, src n'est pas nécessaire, supprimez-le.
Java5 (1.5) est spécifié par défaut, alors ouvrez la propriété dans pom.xml et spécifiez la version. En le spécifiant comme pom parent, il sera également reflété dans le sous-module. Si vous souhaitez changer la version du sous-module, spécifiez également la propriété dans le pom.xml de ce module.
pom.xml[JDK version]
<properties>
<java-version>1.8</java-version>
<maven.compiler.source>${java-version}</maven.compiler.source>
<maven.compiler.target>${java-version}</maven.compiler.target>
</properties>
Créez un sous-module sous le projet parent. Le sous-module créé cette fois sera la bibliothèque jar référencée dans le module Web décrit plus loin.
groupId ・ ・ ・ ・ Identique au projet parent artifactId ・ ・ ・ nom du module version ・ ・ ・ Identique au projet parent paquet ・ ・ ・ ** pot **
Un sous-module est créé avec la structure de dossiers suivante. sub module ├src/main/java └src/test/java
Créez un module d'application Web qui sera cette fois le module principal.
groupId ・ ・ ・ ・ Identique au projet parent artifactId ・ ・ ・ nom du module version ・ ・ ・ Identique au projet parent package ・ ・ ・ ** guerre **
Un module Web est créé avec la structure de dossiers suivante. web module ├src/main/resources └src / main / webapp (dossier racine de l'application Web. META-INF et WEB-INF existent sous celui-ci.)
maven-archetype-webapp ne crée pas de dossier source java ou de dossier de test, alors créez-en un.
web module ├src/main/java ├src/main/resources ├src/main/webapp └src/test/java
Ajoutez une dépendance à pom.xml pour chaque module. De plus, dans Eclipse, vous pouvez utiliser l'éditeur dédié Maven POM pour entrer d'une manière visuellement facile à comprendre.
Ouvrez pom.xml dans l'éditeur Maven POM et ouvrez l'onglet Dépendances. Cliquez sur Ajouter pour les dépendances sur la gauche pour ouvrir la fenêtre Sélectionner une dépendance. Spécifiez l'ID de groupe / l'ID d'artefact / la version / l'étendue de la bibliothèque que vous souhaitez ajouter et appuyez sur OK. Si vous ne savez pas, vous pouvez rechercher par Entrée ... au milieu.
Si vous souhaitez ajouter la bibliothèque ajoutée à la gestion des dépendances du Pom parent et y faire référence en commun avec d'autres sous-modules, appuyez sur Géré. Sélectionnez la bibliothèque que vous souhaitez ajouter au pom parent à partir de la gauche, sélectionnez le pom parent à droite et appuyez sur OK. Cela ajoutera la bibliothèque à la gestion des dépendances du Pom parent, mais si vous voulez l'utiliser avec d'autres sous-modules, ouvrez ce pom.xml et ajoutez la bibliothèque.
Exécutez le plug-in suivant pour générer le rapport sur mvn site
.
Si vous créez le rapport à l'aide de Jenkins, vous pouvez également le générer dans le résultat de la génération.
Un exemple de réglage peut être trouvé à [ici](exemple http://qiita.com/kazokmr/items/971ec5cc8e3a07f2429a#pomxml). (Ceci est mon article.)
pom.xml a une balise profile
. Par exemple, il est utilisé lorsque vous souhaitez modifier une certaine valeur de réglage en fonction de la situation.
Je pense qu'il existe une destination de connexion DB comme méthode souvent utilisée.
Par exemple, la définition de la destination de connexion est un fichier resourceProperty
jdbc.url=jdbc:oracle://xxxxxxxx:1521/ora
jdbc.username=username
jdbc.password=password
Pour construire pour les trois environnements d'environnement de développement (dev), d'environnement de vérification (staging) et d'environnement de production (prod), définissez comme suit dans le profil.
pom.xml
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<jdbc.url>jdbc:oracle://xxxxxxxx:1521/oradev</jdbc.url>
<jdbc.username>Nom d'utilisateur de l'environnement de développement</jdbc.username>
<jdbc.password>Mot de passe de l'environnement de développement</jdbc.password>
</properties>
</profile>
<profile>
<id>staging</id>
<properties>
<jdbc.url>jdbc:oracle://xxxxxxxx:1521/orastaging</jdbc.url>
<jdbc.username>Nom d'utilisateur de l'environnement de vérification</jdbc.username>
<jdbc.password>Mot de passe de l'environnement de vérification</jdbc.password>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<jdbc.url>jdbc:oracle://xxxxxxxx:1521/oraprod</jdbc.url>
<jdbc.username>Nom d'utilisateur de production</jdbc.username>
<jdbc.password>Mot de passe de l'environnement de production</jdbc.password>
</properties>
</profile>
</profiles>
ʻActiveByDefault = trueest la valeur par défaut, alors faites-y référence lors de la construction sans rien spécifier ou lors du démarrage d'une application Web sur l'EDI. Si vous souhaitez basculer vers l'environnement de vérification ou l'environnement de production, spécifiez l'ID de profil avec les options
mvn -P staging package,
man -P prod packageet
-P`.
Le fichier de paramètres dépendant de l'environnement est géré par un module dédié, et en le séparant du module d'application Web, le fichier war peut être réutilisé.
C'est une méthode pour changer certaines propriétés, mais le profil peut également changer le fichier de propriétés lui-même. Par exemple, supposons que les fichiers de propriétés soient gérés dans les répertoires suivants pour chaque environnement.
src/main/resources/··· Répertoire des fichiers de ressources de l'environnement de développement (par défaut)
resources/staging/··· Répertoire de fichiers de ressources pour l'environnement de vérification
resources/prod/··· Répertoire de fichiers de ressources pour l'environnement de production
Le pom.xml pour remplacer les fichiers sous src / main / resources /
pour chaque environnement est le suivant.
pom.xml
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<resources.directory>${basedir}/src/main/resources</resources.directory>
</properties>
</profile>
<profile>
<id>staging</id>
<properties>
<resources.directory>${basedir}/resources/staging</resources.directory>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<resources.directory>${basedir}/resources/prod</resources.directory>
</properties>
</profile>
</profiles>
···
<build>
<resources>
<resource>
<directory>${resources.directory}</directory>
</resource>
</resources>
</build>
Dans la balise de construction, le chemin du répertoire des ressources est défini dans $ {resources.directory}
, et le chemin du répertoire de chaque environnement est défini dans le profil.
En faisant cela, une guerre indépendante de l'environnement est créée et elle peut être réutilisée dans un autre environnement.
De plus, je pense qu'il vaut mieux gérer le fichier de paramètres d'environnement avec un module dédié au lieu du module d'application Web, sortir comme bibliothèque de référence et ne pas l'inclure dans la guerre.
Les instructions Terasoluna expliquent également comment créer des fichiers dépendants de l'environnement. Terasoluna --3.5. Build Development Project
~~ Je voulais utiliser le profil car il y a 3 destinations de connexion DB, environnement de développement / environnement de vérification / environnement de production, dans ce projet également, mais le fichier de configuration de la destination de connexion n'était pas sous le dossier de ressources et sous le dossier de ressources. En raison du grand nombre de fichiers, il était difficile de tous les gérer, j'ai donc d'abord migré sans utiliser de profil. ~~ Je l'ai essayé dans cet article.
Le pilote OJDBC (oracle.jar) n'est pas géré par le référentiel Maven et doit être importé dans le projet Maven en effectuant l'une des opérations suivantes: (Dans ce projet, Oracle.jar est défini sur runtime et sur le serveur de production, le jar est placé dans la bibliothèque de Tomcat.)
~ / .m2 / repository
.Comment utiliser le référentiel Oracle Maven officiel
Cette méthode elle-même n'est ni confirmée ni vérifiée. Cependant, il semble qu'il soit nécessaire de définir la licence OTN dans chaque environnement de développement et qu'il soit nécessaire d'exécuter la commande mvn pour la première fois dans Eclipse.
clean compile`` site d'installation propre
etc.Bien que cela n'ait rien à voir avec Maven, lors de l'exécution d'une application Web dans Eclipse, le plug-in Tomcat a été installé jusqu'à présent, mais cette fois, je vais vous expliquer comment exécuter l'application Tomcat à l'aide du plug-in WTP. (On suppose que le plug-in WTP est installé dans Eclipse)
Apache Maven Project Wikipedia Principes de base de Maven Comment démarrer avec Maven3 Résumé de l'écriture de POM pour Maven2 et Maven3 ~ Présentation ~ Cycle de vie Maven Build Je vais expliquer "Qu'est-ce qu'un outil de construction?" À un nouveau venu qui n'a exécuté que des applications Java depuis Eclipse ... puis vers CI 6. Profil | TECHSCORE
Recommended Posts