English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Le POM (Project Object Model, modèle d'objet de projet) est l'unité de travail de base d'un projet Maven, c'est un fichier XML qui contient les informations de base du projet, utilisées pour décrire comment construire le projet, déclarer les dépendances du projet, etc.
Lors de l'exécution d'une tâche ou d'un objectif, Maven recherche le POM dans le répertoire courant. Il lit le POM, récupère les informations de configuration nécessaires, puis exécute l'objectif.
Le POM peut spécifier les configurations suivantes :
Dépendances du projet
Plug-in
Objectif d'exécution
Profile de construction du projet
Version du projet
La liste des développeurs du projet
Informations des listes de diffusion liées
Avant de créer un POM, nous devons d'abord décrire le groupe de projet (groupId), l'ID unique du projet.
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- version du modèle --> <modelVersion>4.0.0</modelVersion> <!-- l'unique marque d'une entreprise ou d'une organisation, et le chemin généré lors de la configuration est également généré à partir de cela, par exemple com.companyname.project-group, Maven placera le jar généré par ce projet dans le chemin local :/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- l'ID unique du projet, plusieurs projets peuvent être définis sous un groupId, ils sont distingués par artifactId --> <artifactId>project</artifactId> <!-- numéro de version --> <version>1.0</version> </project>
Tous les fichiers POM doivent inclure l'élément project et trois champs obligatoires : groupId, artifactId et version.
nœud | description |
---|---|
project | l'étiquette racine du projet. |
modelVersion | La version du modèle doit être réglée sur 4.0。 |
groupId | C'est l'identifiant du groupe de projet. Il est généralement unique dans une organisation ou un projet. Par exemple, une organisation bancaire com.companyname.project-Le group possède tous les projets liés à la banque. |
artifactId | C'est l'identifiant du projet. Il s'agit généralement du nom du projet. Par exemple, la banque des consommateurs. groupId et artifactId définissent ensemble la position de l'artifact dans le dépôt. |
version | C'est le numéro de version du projet. Dans le dépôt de l'artifact, il est utilisé pour distinguer différentes versions. Par exemple : com.company.bank:consumer-baning:1.0 com.company.bank:consumer-baning:1.1 |
Le POM (Super POM) parent est le POM par défaut de Maven. Tous les POM héritent d'un POM parent (que ce soit explicitement défini ou non). Le POM parent contient des configurations par défaut qui peuvent être héritées. Par conséquent, lorsque Maven détecte la nécessité de télécharger des dépendances dans le POM, il va au dépôt par défaut configuré dans Super POM http://repo1.maven.org/maven2 télécharger.
Maven utilise effective pom (Super pom ajouté à la configuration du projet) pour exécuter les objectifs pertinents, ce qui aide les développeurs à faire le moins de configuration possible dans pom.xml, bien sûr, ces configurations peuvent être redéfinies.
Utilisez la commande suivante pour afficher la configuration par défaut de Super POM :
mvn help:effective-pom
créons le répertoire MVN/project, créez pom.xml dans ce répertoire, le contenu est le suivant :
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- version du modèle --> <modelVersion>4.0.0</modelVersion> <!-- l'unique marque d'une entreprise ou d'une organisation, et le chemin généré lors de la configuration est également généré à partir de cela, par exemple com.companyname.project-group, Maven placera le jar généré par ce projet dans le chemin local :/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- l'ID unique du projet, plusieurs projets peuvent être définis sous un groupId, ils sont distingués par artifactId --> <artifactId>project</artifactId> <!-- numéro de version --> <version>1.0</version> </project>
Entrez dans MVN dans la console de commande/dossier de projet, exécutez les commandes suivantes :
C:\MVN\project>mvn help:effective-pom
Maven will start processing and display effective-pom。
[INFO] Scanning for projects... Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:36 min [INFO] Finished at: 2018-09-05T11:31:28+08:00 [INFO] Final Memory: 15M/149M [INFO] ------------------------------------------------------------------------
The result of Effective POM is displayed as in the console, after inheritance and interpolation, making the configuration effective.
<?xml version="1.0" encoding="UTF-8"?> <!-- ================================================================= --> <!-- --> <!-- Generated by Maven Help Plugin on 2012-07-05T11:41:51 --> <!-- See: http://maven.apache.org/plugins/maven-help-plugin/ --> <!-- --> <!-- ================================================================= --> <!-- ================================================================= --> <!-- --> <!-- Effective POM for project --> <!-- 'com.companyname.project-group:project-name:jar:1.0' --> <!-- --> <!-- ================================================================= --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/ 2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h ttp://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0</version> <build <sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory> <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> <testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory> <outputDirectory>C:\MVN\project\target\classes</outputDirectory> <testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory> <resources <resource <mergeId>resource-0</mergeId> <directory>C:\MVN\project\src\main\resources</directory> </resource> </resources> <testResources <testResource <mergeId>resource-1</mergeId> <directory>C:\MVN\project\src\test\resources</directory> </testResource> </testResources> <directory>C:\MVN\project\target</directory> <finalName>project-1.0</finalName> <pluginManagement <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.3</version> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-2</version> </plugin> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.0</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.4</version> </plugin> <plugin> <artifactId>maven-ear-plugin</artifactId> <version>2.3.1</version> </plugin> <plugin> <artifactId>maven-ejb-plugin</artifactId> <version>2.1</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <version>2.5</version> </plugin> <plugin> <artifactId>maven-plugin-plugin</artifactId> <version>2.4.3</version> </plugin> <plugin> <artifactId>maven-rar-plugin</artifactId> <version>2.2</version> </plugin> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.0-beta-8</version> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.3</version> </plugin> <plugin> <artifactId>maven-site-plugin</artifactId> <version>2.0-beta-7</version> </plugin> <plugin> <artifactId>maven-source-plugin</artifactId> <version>2.0.4</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.3</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1-alpha-2</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-help-plugin</artifactId> <version>2.1.1</version> </plugin> </plugins> </build> <repositories> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Tableau de bord des dépôts Maven</name> <url>http://repo1.maven.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Repository de plugins Maven</name> <url>http://repo1.maven.org/maven2</url> </pluginRepository> </pluginRepositories> <reporting> <outputDirectory>C:\MVN\project\target/site</outputDirectory> </reporting> </project>
Dans le fichier pom.xml ci-dessus, vous pouvez voir que Maven utilise par défaut le répertoire source de code du projet, le répertoire de sortie, les plugins nécessaires, les dépôts et les répertoires de rapports lors de l'exécution des objectifs.
Le fichier pom.xml de Maven n'a pas besoin d'être écrit manuellement.
Maven fournit de nombreux plugins prototypes pour créer des projets, y compris la structure du projet et le fichier pom.xml.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--Coordonnées du projet parent. Si aucune valeur n'est spécifiée pour un élément dans le projet, la valeur correspondante dans le projet parent est la valeur par défaut du projet. Les coordonnées incluent l'ID de groupe, l'ID d'artefact et version。 --> <parent> <!--Identifiant du composant du projet parent hérité --> <artifactId /> <!--Identifiant universel du projet parent hérité --> <groupId /> <!--Version du projet parent hérité --> <version /> <!-- Chemin relatif au fichier pom.xml du projet parent. Le chemin relatif vous permet de choisir un chemin différent. La valeur par défaut est ../pom.xml. Maven cherche d'abord le pom du projet parent à l'endroit où il construit le projet actuel Pom cible, puis à cet emplacement dans le système de fichiers (emplacement relativePath), puis dans le dépôt local, enfin dans le dépôt distant pour chercher le pom du projet parent. --> <relativePath /> </parent> <!--Déclarer la version du modèle POM que suit le descriptif de projet. La version du modèle elle-même change rarement, bien que cela soit ainsi, elle reste indispensable, ce qui garantit la stabilité lorsque Maven introduit de nouvelles fonctionnalités ou des modifications de modèle. --> <modelVersion>4.0.0</modelVersion> <!--Identifiant universel du projet, généralement utilisé pour distinguer ce projet d'autres projets en utilisant le nom complet du paquetage. Et le chemin généré lors de la construction est également généré par cela, par exemple, le chemin relatif généré pour com.mycompany.app est :/com/mycompany/app --> <groupId>asia.banseon</groupId> <!-- L'identifiant du composant, qui, avec l'ID de groupe, identifie de manière unique un composant. En d'autres termes, vous ne pouvez pas avoir deux projets différents avec le même artifact ID et groupId; dans un L'ID de groupe spécifique doit également être unique sous l'ID d'artifact. Un composant est quelque chose produit ou utilisé par un projet, les composants produits par Maven pour un projet incluent: JARs, code source, publications binaires et WARs, etc. --> <artifactId>banseon-maven2</artifactId> <!--Type de composant généré par le projet, par exemple jar, war, ear, pom. Les plugins peuvent créer leurs propres types de composants, donc la liste précédente n'est pas exhaustive des types de composants --> <packaging>jar</packaging> <!--Version actuelle du projet, au format: version principale.version secondaire.version incrémentale-Version limitée --> <version>1.0-SNAPSHOT</version> <!--Nom du projet, utilisé par les documents générés par Maven --> <name>banseon-maven</name> <!--URL de la page d'accueil du projet, utilisée par les documents générés par Maven --> <url>http://www.baidu.com/banseon</url> <!-- Description détaillée du projet, utilisée par les documents générés par Maven. Lorsque cet élément peut être décrit en format HTML (par exemple, le texte dans les CDATA est ignoré par l'analyseur, il peut inclure HTML) S'il vous plaît n'utilisez pas de description de texte brut. Si vous devez modifier la page d'index générée par le site Web, vous devriez modifier votre propre fichier de page d'index, plutôt que de modifier ce document. --> <description>Un projet maven pour étudier maven.</description> <!--Description des prérequis de l'environnement de construction du projet. --> <prerequisites <!--La version minimale de Maven nécessaire pour construire ce projet ou utiliser cette extension --> <maven /> </prerequisites> <!--Le nom et l'URL du système de gestion des problèmes du projet (Bugzilla, Jira, Scarab, ou tout autre système de gestion des problèmes que vous préférez), ce exemple est jira --> <issueManagement <!--Le nom du système de gestion des problèmes (par exemple jira), --> <system>jira</system> <!--L'URL du système de gestion des problèmes utilisé par ce projet --> <url>http://jira.baidu.com/banseon</url> </issueManagement> <!--Informations sur l'intégration continue du projet --> <ciManagement <!--Le nom du système de intégration continue, par exemple continuum --> <system /> <!--L'URL du système de intégration continue utilisé par ce projet (si le système de intégration continue a une interface web). --> <url /> <!--Développeurs à notifier à la fin de la construction/Options de configuration de l'utilisateur. Inclut des informations sur les destinataires et les conditions de notification (erreur, échec, succès, avertissement) --> <notifiers <!--Configurer une méthode pour informer les utilisateurs lorsque la construction est interrompue/Développeur --> <notifier <!--Moyen de transmission des notifications --> <type /> <!--Notifier lors d'une erreur --> <sendOnError /> <!--Notifier lors d'une échec de la construction --> <sendOnFailure /> <!--Notifier lors d'une réussite de la construction --> <sendOnSuccess /> <!--Notifier lors d'un avertissement --> <sendOnWarning /> <!--Non recommandé. Où envoyer les notifications --> <address /> <!--Option de configuration étendue --> <configuration /> </notifier> </notifiers> </ciManagement> <!--L'année de création du projet,4Un nombre. Ce valeur doit être utilisée lors de la génération des informations de copyright. --> <inceptionYear /> <!--Informations sur les listes de courriers électroniques associées au projet --> <mailingLists> <!--Cet élément décrit toutes les listes de courriers électroniques associées au projet. Les sites web générés utilisent ces informations automatiquement. --> <mailingList> <!--Le nom du courrier électronique --> <name>Demo</name> <!--L'adresse ou le lien du courrier électronique, si c'est une adresse e-mail, le lien mailto: sera automatiquement créé lors de la création du document --> <post>[email protected]</post> <!--L'adresse ou le lien du courrier électronique, si c'est une adresse e-mail, le lien mailto: sera automatiquement créé lors de la création du document --> <subscribe>[email protected]</subscribe> <!--Adresse ou lien pour annuler l'abonnement aux newsletters, s'il s'agit d'une adresse e-mail, un lien mailto: sera automatiquement créé lors de la création du document --> <unsubscribe>[email protected]</unsubscribe> <!--Vous pouvez consulter l'URL des informations de courrier électronique --> <archive>http:/hi.baidu.com/banseon/demo/dev/</archive> </mailingList> </mailingLists> <!--La liste des développeurs du projet --> <developers <!--Les informations sur un développeur de projet --> <developer <!--L'identifiant unique du développeur du projet dans le SCM --> <id>HELLO WORLD</id> <!--Le nom complet du développeur du projet --> <name>banseon</name> <!--L'email du développeur du projet --> <email>[email protected]</email> <!--L'URL du profil personnel du développeur du projet --> <url /> <!--Les rôles que joue le développeur du projet dans le projet, l'élément role décrit divers rôles --> <roles <role>Project Manager</role> <role>Architect</role> </roles> <!--L'organisation à laquelle appartient le développeur du projet --> <organization>demo</organization> <!--L'URL de l'organisation à laquelle appartient le développeur du projet --> <organizationUrl>http://hi.baidu.com/banseon</organizationUrl> <!--Les propriétés du développeur du projet, telles que la gestion des messages instantanés --> <properties <dept>No</dept> </properties> <!--Le fuseau horaire du développeur du projet, -11à12Entiers dans la plage --> <timezone-5</timezone> </developer> </developers> <!--La liste des autres contributeurs du projet --> <contributors <!--Les autres contributeurs du projet. Voir developers/l'élément developer --> <contributor <name /> <email /> <url /> <organization /> <organizationUrl /> <roles /> <timezone /> <properties /> </contributor> </contributors> <!--Cet élément décrit la liste de toutes les licences du projet. Il ne devrait être répertorié que la liste des licences du projet, et non pas la liste des licences des projets dépendants. Si plusieurs licences sont répertoriées, l'utilisateur peut choisir l'une d'elles plutôt que d'accepter toutes les licences. --> <licenses> <!--Décrivez la licence du projet, utilisée pour générer la page de licence du site web du projet, d'autres rapports et validations utiliseront également cet élément. --> <license> <!--Le nom juridique de la licence --> <name>Apache 2</name> <!--L'URL de la page de texte officielle de la licence --> <url>http://www.baidu.com/banseon/LICENSE-2.0.txt</url> <!--La principale méthode de distribution du projet : repo, peut être téléchargé depuis le dépôt Maven, manual, l'utilisateur doit télécharger et installer manuellement les dépendances --> <distribution>repo</distribution> <!--Informations supplémentaires sur la licence --> <comments>Informations supplémentaires sur la licence-licence OSS amicale/comments> </license> </licenses> <!--La balise SCM (Source Control Management) permet de configurer votre dépôt de code, pour le site web Maven et d'autres plugins. --> <scm> <!--L'URL du SCM, cette URL décrit le dépôt de version et la manière de se connecter au dépôt. Pour plus de détails, voir les formats et listes d'URL fournis par les SCMs. Ce lien est en lecture seule. --> <connection> scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) </connection> <!--Pour les développeurs, similaire à l'élément connection. C'est-à-dire que ce lien n'est pas seulement en lecture --> <developerConnection> scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk </developerConnection> <!--L'étiquette du code courant, par défaut HEAD au stade de développement --> <tag /> <!--URL vers le dépôt SCM (Source Control Management) du projet (par exemple ViewVC ou Fisheye). --> <url>http://svn.baidu.com/banseon</url> </scm> <!--Décrivez divers attributs de l'organisation à laquelle le projet appartient. Les documents générés par Maven utilisent --> <organization> <!--Le nom complet de l'organisation --> <name>demo</name> <!--L'URL de la page d'accueil de l'organisation --> <url>http://www.baidu.com/banseon</url> </organization> <!--Informations nécessaires pour la construction du projet --> <build <!--L'élément définit le répertoire du code source du projet. Lors de la construction du projet, le système de construction compile le code source du répertoire. Ce chemin est une chemin relatif par rapport à pom.xml. --> <sourceDirectory /> <!--L'élément définit le répertoire du code source des scripts de projet, ce répertoire est différent du répertoire source : dans la plupart des cas, le contenu de ce répertoire sera copié dans le répertoire de sortie (parce que les scripts sont interprétés,而非compilés). --> <scriptSourceDirectory /> <!--L'élément ceci définit le répertoire de code source utilisé par les tests unitaires du projet. Lorsque le projet de test est construit, le système de construction compile le code source du répertoire. Ce chemin est relatif au pom.xml. --> <testSourceDirectory /> <!--Dossier où sont stockés les fichiers de classes compilés de l'application. --> <outputDirectory /> <!--Dossier où sont stockés les fichiers de classes compilés des tests. --> <testOutputDirectory /> <!--Utiliser une série d'extensions de construction venant de ce projet --> <extensions> <!--Description de l'extension de construction utilisée --> <extension> <!--groupId de l'extension de construction --> <groupId /> <!--artifactId de l'extension de construction --> <artifactId /> <!--Version de l'extension de construction --> <version /> </extension> </extensions> <!--si le projet n'a pas de cible spécifiée (Maven2 par défaut) lors de l'appel d'une étape --> <defaultGoal /> <!--Cet élément décrit la liste des chemins de ressources associés au projet, par exemple des fichiers de propriétés associés au projet, ces ressources sont incluses dans le fichier de paquet final. --> <resources <!--Cet élément décrit tous les chemins de ressources associés au projet ou aux tests --> <resource <!-- Description du chemin cible des ressources. Ce chemin est relatif à target/Le répertoire classes (par exemple ${project.build.outputDirectory}). Par exemple sous, si vous voulez que les ressources soient dans un paquet spécifique (org.apache.maven.messages), vous devez définir cet élément sur org/apache/maven /messages. Cependant, si vous ne voulez rien d'autre que de placer les ressources dans la structure de répertoires du code source, vous n'avez pas besoin de cette configuration. --> <targetPath /> <!--Utiliser des valeurs de paramètres pour remplacer les noms de paramètres. Les valeurs de paramètres sont prises à partir de l'élément properties ou des propriétés configurées dans le fichier, le fichier est répertorié dans l'élément filters. --> <filtering /> <!--Description du répertoire de stockage des ressources, ce chemin est relatif au chemin POM --> <directory /> <!--Liste des motifs à inclure, par exemple**/*.xml. --> <includes /> <!--Liste des motifs à exclure, par exemple**/*.xml --> <excludes /> </resource> </resources> <!--Cet élément décrit toutes les chemins de ressources associées aux tests unitaires, par exemple des fichiers de propriétés associés aux tests unitaires. --> <testResources <!--Cet élément décrit toutes les chemins de ressources associées aux tests, voir build/resources/Description de l'élément resource --> <testResource <targetPath /> <filtering /> <directory /> <includes /> <excludes /> </testResource> </testResources> <!--Dossier où sont stockés tous les fichiers générés par la construction --> <directory /> <!--Nom du fichier du composant généré, la valeur par défaut est ${artifactId}-${version} --> <finalName /> <!--Liste des fichiers de propriétés de filtre utilisés lorsque le commutateur de filtrage est activé --> <filters /> <!--Informations par défaut de l'extension que peut utiliser le sous-projet. Cette option de configuration de l'extension ne sera décodée ou liée à la vie du cycle de vie qu'au moment de l'utilisation. Toute configuration locale de l'extension donnée remplacera la configuration ici --> <pluginManagement <!--Liste des extensions utilisées --> <plugins> <!--L'élément plugin contient les informations nécessaires à l'extension. --> <plugin> <!--L'ID de groupe de l'extension dans le dépôt --> <groupId /> <!--ID d'artifact du plugin dans le dépôt --> <artifactId /> <!--Version du plugin utilisé (ou plage de versions) --> <version /> <!--Télécharger ou non les extensions Maven du plugin utilisé (par exemple, les打包eurs et les processors de type), en raison de raisons de performance, cet élément n'est configuré que lorsque cela est vraiment nécessaire. --> <extensions /> <!--Configuration de l'exécution d'un ensemble de cibles dans le cycle de vie de construction. Chaque cible peut avoir une configuration différente. --> <executions <!--L'élément execution contient les informations nécessaires à l'exécution du plugin --> <execution <!--Identifiant de la cible d'exécution, utilisé pour identifier la cible dans le processus de construction ou pour correspondre aux cibles d'exécution nécessitant une fusion pendant l'héritage --> <id /> <!--L'étape du cycle de vie de construction auquel est liée la cible, si elle est omise, la cible sera liée à l'étape par défaut configurée dans les données source, --> <phase /> <!--Cible d'exécution de la configuration --> <goals /> <!--Configuration propagée aux sous-POM --> <inherited /> <!--Configuration utilisée en tant qu'objet DOM --> <configuration /> </execution> </executions> <!--Dépendances supplémentaires nécessaires pour l'introduction du plugin de projet --> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <!--toute configuration est-elle propagée aux sous-projets --> <inherited /> <!--Configuration utilisée en tant qu'objet DOM --> <configuration /> </plugin> </plugins> </pluginManagement> <!--Liste des plugins utilisés --> <plugins> <!--Voir build/pluginManagement/plugins/élément plugin --> <plugin> <groupId /> <artifactId /> <version /> <extensions /> <executions <execution <id /> <phase /> <goals /> <inherited /> <configuration /> </execution> </executions> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <goals /> <inherited /> <configuration /> </plugin> </plugins> </build> <!--Profile de construction des projets listés, s'ils sont activés, ils modifieront le traitement de construction --> <profiles> <!--Activer un traitement de construction spécifique en fonction des paramètres d'environnement ou des paramètres de ligne de commande --> <profile> <!--Identifiant unique de la configuration de construction. Il est utilisé à la fois pour activer via la ligne de commande et pour fusionner les profiles ayant le même identifiant lors de l'héritage. --> <id /> <!--Logique conditionnelle déclenchant automatiquement le profile. L'activation est la clé d'activation du profile. La force du profile réside dans sa capacité à utiliser automatiquement certaines valeurs spécifiques dans certains environnements spécifiques ; ces environnements sont spécifiés par l'élément activation. L'élément activation n'est pas le seul moyen d'activer le profile. --> <activation> <!--Indicateur du profile activé par défaut --> <activeByDefault /> <!--Lorsque le JDK correspondant est détecté, le profile est activé. Par exemple,1.4Activer JDK1.4,1.4.0_2, mais!1.4Activer tous les versions qui ne commencent pas par1.4JDK en tête. --> <jdk /> <!--Lorsque la propriété de système d'exploitation correspondante est détectée, le profile est activé. L'élément os peut définir des propriétés liées au système d'exploitation. --> <os> <!--Nom du système d'exploitation activé --> <name>Windows XP</name> <!--Famille au sein de laquelle le système d'exploitation est activé (par exemple, 'windows') --> <family>Windows</family> <!--Architecture du système d'exploitation activant le profile --> <arch>x86</arch> <!--Version du système d'exploitation activant le profile --> <version>5.1.2600</version> </os> <!--Si Maven détecte une propriété spécifique (dont la valeur peut être appelée via ${nom} dans le POM), elle possède un nom et une valeur correspondants, le profile sera activé. Si le champ valeur est vide, le champ nom de propriété activera le profile, sinon il s'agit d'une correspondance en tenant compte de la casse des valeurs de champ. --> <property> <!--Nom de l'attribut activant le profile --> <name>mavenVersion</name> <!--Valeur de l'attribut activant le profile --> <value2.0.3</value> </property> <!--Fournir un nom de fichier pour activer le profile via la vérification de l'existence ou de l'absence de ce fichier. missing vérifie l'existence du fichier, s'il n'existe pas, le profile est activé. D'autre part, exists vérifie l'existence du fichier, s'il existe, le profile est activé. --> <file <!--Si le fichier spécifié existe, le profile est activé. --> <exists/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists> <!--Si le fichier spécifié n'existe pas, le profile est activé. --> <missing/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing> </file> </activation> <!--Informations nécessaires pour la construction du projet. Voir l'élément build --> <build <defaultGoal /> <resources <resource <targetPath /> <filtering /> <directory /> <includes /> <excludes /> </resource> </resources> <testResources <testResource <targetPath /> <filtering /> <directory /> <includes /> <excludes /> </testResource> </testResources> <directory /> <finalName /> <filters /> <pluginManagement <plugins> <!--Voir build/pluginManagement/plugins/élément plugin --> <plugin> <groupId /> <artifactId /> <version /> <extensions /> <executions <execution <id /> <phase /> <goals /> <inherited /> <configuration /> </execution> </executions> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <goals /> <inherited /> <configuration /> </plugin> </plugins> </pluginManagement> <plugins> <!--Voir build/pluginManagement/plugins/élément plugin --> <plugin> <groupId /> <artifactId /> <version /> <extensions /> <executions <execution <id /> <phase /> <goals /> <inherited /> <configuration /> </execution> </executions> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <goals /> <inherited /> <configuration /> </plugin> </plugins> </build> <!--Les modules (parfois appelés sous-projets) sont construits en tant que partie du projet. Chaque élément de module est un chemin relatif vers le répertoire du module --> <modules /> <!--Liste des dépôts distants découverts pour les dépendances et les extensions. --> <repositories> <!--Voir repositories/repository元素 --> <repository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> </releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <id /> <name /> <url /> <layout /> </repository> </repositories> <!--Liste des dépôts de plugins distants découverts, utilisés pour la construction et les rapports --> <pluginRepositories> <!--Contient des informations nécessaires pour se connecter aux dépôts de plugins distants. Voir repositories/repository元素 --> <pluginRepository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> </releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <id /> <name /> <url /> <layout /> </pluginRepository> </pluginRepositories> <!--Cet élément décrit toutes les dépendances liées au projet. Ces dépendances constituent des étapes du processus de construction du projet. Elles sont téléchargées automatiquement à partir du dépôt défini dans le projet. Pour plus d'informations, voir le mécanisme de dépendance du projet. --> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <!--déconseillé d'utiliser. Maven ignore maintenant cet élément. --> <reports /> <!--Cet élément inclut les spécifications pour la génération de rapports via des plugins de rapport. Lorsque l'utilisateur exécute "mvn site", ces rapports s'exécutent. Vous pouvez voir les liens vers tous les rapports dans la barre de navigation de la page. Voir l'élément reporting --> <reporting> ...... </reporting> <!--Voir l'élément dependencyManagement --> <dependencyManagement> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> </dependencyManagement> <!--Voir l'élément distributionManagement --> <distributionManagement> ...... </distributionManagement> <!--Voir l'élément properties --> <properties /> </profile> </profiles> <!--Les modules (parfois appelés sous-projets) sont construits en tant que partie du projet. Chaque élément de module est un chemin relatif vers le répertoire du module --> <modules /> <!--Liste des dépôts distants découverts pour les dépendances et les extensions. --> <repositories> <!--Contient des informations nécessaires pour se connecter aux dépôts distants --> <repository> <!--comment traiter le téléchargement des versions de publication dans les dépôts distants --> <releases> <!--true ou false indique si le dépôt doit télécharger un type de composant donné (version de publication, version snapshot). --> <enabled /> <!--Cet élément spécifie la fréquence des mises à jour. Maven compare les horodatages des POM locaux et distants. Les options sont : always (toujours), daily (par défaut, quotidiennement), interval : X (ici X est l'intervalle en minutes), ou never (jamais). --> <updatePolicy /> <!--Quand Maven échoue à valider le fichier de vérification des composants, que faire : ignore (ignorer), fail (échouer), ou warn (avertir). --> <checksumPolicy /> </releases> <!-- comment traiter le téléchargement des versions snapshot dans les dépôts distants. Avec les configurations releases et snapshots, le POM peut adopter des stratégies différentes pour chaque type de composant dans chaque dépôt individuel stratégie. Par exemple, quelqu'un pourrait décider d'activer le téléchargement des versions snapshot uniquement à des fins de développement. Voir repositories/repository/l'élément releases --> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <!--Identifiant unique du dépôt distant. Il peut être utilisé pour correspondre au dépôt distant configuré dans le fichier settings.xml --> <id>banseon-repository-proxy</id> <!--Nom du dépôt distant --> <name>banseon-repository-proxy</name> <!--URL du dépôt distant, suivant le protocole://hostname/path形式 --> <url>http://192.168.1.169:9999/repository/</url> <!-- est le type d'agencement de dépôt utilisé pour localiser et trier les composants-peut être default (par défaut) ou legacy (obsolète). Maven 2fournit un agencement par défaut pour ses dépôts; mais Et Maven 1.x a un agencement différent. Nous pouvons utiliser cet élément pour spécifier si l'agencement est default (par défaut) ou legacy (obsolète). --> <layout>default</layout> </repository> </repositories> <!--Liste des dépôts de plugins distants découverts, utilisés pour la construction et les rapports --> <pluginRepositories> <!--Contient des informations nécessaires pour se connecter aux dépôts de plugins distants. Voir repositories/repository元素 --> <pluginRepository> ...... </pluginRepository> </pluginRepositories> <!--Cet élément décrit toutes les dépendances liées au projet. Ces dépendances constituent des étapes du processus de construction du projet. Elles sont téléchargées automatiquement à partir du dépôt défini dans le projet. Pour plus d'informations, voir le mécanisme de dépendance du projet. --> <dependencies> <dependency> <!--ID de groupe de la dépendance --> <groupId>org.apache.maven</groupId> <!--ID d'artifact de la dépendance --> <artifactId>maven-artifact</artifactId> <!--Numéro de version de la dépendance. Dans Maven 2dans, il peut également être configuré comme une plage de version. --> <version>3.8.1</version> <!-- Type de dépendance, le type par défaut étant jar. Il représente généralement l'extension du fichier de dépendance, mais il y a des exceptions. Un type peut être mappé à une autre extension ou un classificateur. Le type correspond souvent au mode de paquet utilisé. Bien que cela ait aussi des exceptions. Certains exemples de types: jar, war, ejb-client et test-jar. Si extensions est configuré à true, vous pouvez définir de nouveaux types dans le plugin. Par conséquent, les instances de types précédents ne sont pas complètes. --> <type>jar</type> <!-- Classificateur de dépendance. Le classificateur peut distinguer les composants appartenant au même POM, mais différents modes de construction. Le nom du classificateur est ajouté à la version du fichier. Par exemple, si vous souhaitez construire deux composants distincts en Un JAR utilise Java 1.4Un autre compilateur utilise Java 6En utilisant un compilateur, vous pouvez utiliser le classificateur pour générer deux composants JAR distincts. --> <classifier></classifier> <!--Portée de la dépendance. Dans le processus de publication du projet, aide à déterminer quels composants doivent être inclus. Pour plus de détails, veuillez consulter le mécanisme de dépendance. - compile :Portée par défaut, utilisée pour la compilation - provided:Similaire à la compilation, mais prend en charge le JDK ou le conteneur que vous attendez, similaire à classpath - runtime: Nécessaire lors de l'exécution - test: Utilisé lors de la tâche test - system: Nécessite l'élément externe correspondant. Il peut être obtenu via systemPath. - systemPath: Utilisé uniquement pour la portée system. Fournit le chemin correspondant. - optional: Lorsque le projet lui-même est dépendant, indique si la dépendance est transmise. Utilisé pour des dépendances continues. --> <scope>test</scope> <!--Utilisé uniquement dans le domaine system. Attention, l'utilisation de cet élément n'est pas encouragée et il pourrait être remplacé dans les nouvelles versions. Cet élément spécifie un chemin sur le système de fichiers pour la dépendance. Un chemin absolu est nécessaire而非un chemin relatif. Il est recommandé d'utiliser une correspondance de propriété pour le chemin absolu, par exemple ${java.home}. --> <systemPath></systemPath> <!--lors du calcul des dépendances transitoires, indiquez les ensembles de composants de dépendance à exclure de la liste des composants de dépendance. C'est-à-dire informez Maven que vous ne dépendez que des projets spécifiés et non des dépendances des projets. Cet élément est principalement utilisé pour résoudre les problèmes de conflit de versions. --> <exclusions> <exclusion> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> <!--dépendances optionnelles, si vous déclarez la dépendance C comme optionnelle dans le projet B, vous devez explicitement référencer la dépendance C dans le projet dépendant de B (par exemple, le projet A). Les dépendances optionnelles bloquent la transmissibilité des dépendances. --> <optional>true</optional> </dependency> </dependencies> <!--déconseillé d'utiliser. Maven ignore maintenant cet élément. --> <reports></reports> <!--cet élément décrit les spécifications utilisées pour générer les rapports avec les plugins de rapport. Lorsque l'utilisateur exécute "mvn site", ces rapports s'exécuteront. Les liens vers tous les rapports sont visibles dans la barre de navigation de la page. --> <reporting> <!--true, alors, le site ne comprend pas les rapports par défaut. Cela inclut les rapports du menu "Informations sur le projet". --> <excludeDefaults /> <!--où tous les rapports générés sont stockés. La valeur par défaut est ${project.build.directory}/site。 --> <outputDirectory /> <!--les plugins de rapport utilisés et leurs configurations. --> <plugins> <!--l'élément plugin contient les informations nécessaires pour décrire le plugin de rapport --> <plugin> <!--ID de groupe du plugin de rapport dans le dépôt --> <groupId /> <!--ID d'artifact du plugin de rapport dans le dépôt --> <artifactId /> <!--la version du plugin de rapport utilisé (ou la gamme de versions) --> <version /> <!--toute configuration est-elle propagée aux sous-projets --> <inherited /> <!--configuration du plugin de rapport --> <configuration /> <!--multiples spécifications d'un ensemble de rapports, chacune pouvant avoir des configurations différentes. Une spécification (collection de rapports) correspond à un objectif d'exécution. Par exemple, il y a1,2,3,4,5,6,7,8,9rapports.1,2,5constitue la collection A de rapports, correspondant à un objectif d'exécution.2,5,8constitue la collection B de rapports, correspondant à un autre objectif d'exécution --> <reportSets> <!--représente une collection de rapports ainsi que la configuration générant cette collection --> <reportSet> <!--l'identifiant unique de la collection de rapports, utilisé lors de l'héritage POM --> <id /> <!--la configuration des rapports utilisés lors de la création de la collection de rapports --> <configuration /> <!--la configuration est-elle héritée par les sous-POMs --> <inherited /> <!--dans cette collection, quels rapports sont utilisés --> <reports /> </reportSet> </reportSets> </plugin> </plugins> </reporting> <!-- 继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和 artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID 匹配到这里的依赖,并使用这里的依赖信息。 --> <dependencyManagement> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> </dependencyManagement> <!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。 --> <distributionManagement> <!--部署项目产生的构件到远程仓库需要的信息 --> <repository> <!--是分配给快照一个唯一的版本号(由时间戳和构建流水号)?还是每次都使用相同的版本号?参见repositories/repository元素 --> <uniqueVersion /> <id>banseon-maven2</id> <name>banseon maven2</name> <url>file://${basedir}/target/deploy</url> <layout /> </repository> <!--构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 --> <snapshotRepository> <uniqueVersion /> <id>banseon-maven2</id> <name>Banseon-maven2 Snapshot Repository</name> <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url> <layout /> </snapshotRepository> <!--部署项目的网站需要的信息 --> <site> <!--部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置 --> <id>banseon-site</id> <!--部署位置的名称 --> <name>business api website</name> <!--部署位置的URL,按protocol://hostname/path形式 --> <url> scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web </url> </site> <!--URL de la page de téléchargement du projet. Si cet élément n'existe pas, l'utilisateur devrait se référer à la page d'accueil. L'utilisation de cet élément est motivée par : aider à localiser les artefacts qui ne sont pas dans le dépôt (à cause des restrictions de licence). --> <downloadUrl /> <!--Si l'artefact a un nouveau group ID et artifact ID (l'artefact a été déplacé à un nouveau endroit), indiquez ici les informations de rélocation de l'artefact. --> <relocation> <!--Nouveau group ID de l'artefact --> <groupId /> <!--Nouveau artifact ID de l'artefact --> <artifactId /> <!--Nouveau numéro de version de l'artefact --> <version /> <!--Informations supplémentaires affichées à l'utilisateur concernant le déplacement, par exemple la raison. --> <message /> </relocation> <!-- indique l'état de cet artefact dans le dépôt distant. Ne pas définir cet élément dans le projet local, car c'est l'outil qui le met à jour automatiquement. Les valeurs valides sont : none (par défaut), converted (le gestionnaire de dépôt a Maven 1 POM converti),partner(directement depuis un Maven 2synchronisé dans le dépôt),deployed(venant de Maven 2Exemple de déploiement),verified(correct et final après vérification)。 --> <status /> </distributionManagement> <!--Remplacez le nom par une valeur. Les Properties peuvent être utilisées partout dans le POM, et peuvent également agir comme des conditions déclenchantes (voir les explications sur l'élément activation dans le fichier de configuration settings.xml). Le format est <name>value</name>。 --> <properties /> </project>