English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
POM (Project Object Model, Projektobjektmodell) ist die grundlegende Arbeitseinheit eines Maven-Projekts, eine XML-Datei, die grundlegende Projektinformationen enthält und beschreibt, wie das Projekt gebaut wird, die Abhängigkeiten des Projekts deklariert und mehr.
Wenn eine Aufgabe oder ein Ziel ausgeführt wird, sucht Maven in dem aktuellen Verzeichnis nach einer POM. Er liest die POM, holt die erforderlichen Konfigurationsinformationen und führt das Ziel aus.
In der POM können folgende Konfigurationen spezifiziert werden:
Projektabhängigkeiten
Plugins
Ziel ausführen
Projektbouwprofiel
Projektversion
Liste der Projektentwickler
Zusammenhängende E-Mail-Liste Informationen
Bevor ein POM erstellt wird, müssen wir zunächst den Projektgruppe (groupId) und die eindeutige Projekt-ID beschreiben.
<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"> <!-- Model Version --> <modelVersion>4.0.0</modelVersion> <!-- Die einzigartige Marke eines Unternehmens oder einer Organisation, und der generierte Pfad bei der Konfiguration wird ebenfalls daraus generiert, z.B. com.companyname.project-group, Maven speichert die Jar-Pakete dieses Projekts im lokalen Pfad:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- Die einzigartige ID des Projekts, es können mehrere Projekte unter einer groupId existieren, die durch artifactId unterschieden werden --> <artifactId>project</artifactId> <!-- Version --> <version>1.0</version> </project>
Alle POM-Dateien müssen den Element 'project' und drei obligatorische Felder: groupId, artifactId und version enthalten.
Knoten | Beschreibung |
---|---|
project | Die Wurzelmarke des Projekts. |
modelVersion | Die Modellversion muss auf folgenden Wert gesetzt werden 4.0。 |
groupId | Dies ist die Marke der Projektgruppe. Sie ist in einer Organisation oder einem Projekt in der Regel einzigartig. Zum Beispiel, eine Bankorganisation com.companyname.project-Die group besitzt alle und mit der Bank verbundenen Projekte. |
artifactId | Dies ist die Marke des Projekts. Es ist normalerweise der Name des Projekts. Zum Beispiel, Consumer Bank. groupId und artifactId definieren zusammen die Position des Artifacts im Repository. |
version | Dies ist die Versionsnummer des Projekts. Im Repository des Artifacts wird sie verwendet, um verschiedene Versionen zu unterscheiden. Zum Beispiel: com.company.bank:consumer-banking:1.0 com.company.bank:consumer-banking:1.1 |
Der Eltern-(Super)POM ist der Standard-POM von Maven. Alle POMs sind von einem Eltern-POM abgeleitet (obwohl dieser Eltern-POM nicht explizit definiert wurde). Der Eltern-POM enthält einige Default-Einstellungen, die weitergegeben werden können. Daher sucht Maven, wenn er POM-Abhängigkeiten herunterladen muss, im Super POM konfigurierten Standard-Repository http://repo1.maven.org/maven2 Herunterladen.
Maven verwendet das effektive pom (Super pom plus die eigene Konfiguration des Projekts), um die entsprechenden Ziele auszuführen. Es hilft Entwicklern, so wenig wie möglich in pom.xml zu konfigurieren, natürlich können diese Einstellungen überschrieben werden.
Verwenden Sie folgenden Befehl, um die Standardkonfiguration des Super POM anzuzeigen:
mvn help:effective-pom
Erstellen wir nun das Verzeichnis MVN/project, erstellen Sie im Verzeichnis pom.xml mit folgendem Inhalt:
<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"> <!-- Model Version --> <modelVersion>4.0.0</modelVersion> <!-- Die einzigartige Marke eines Unternehmens oder einer Organisation, und der generierte Pfad bei der Konfiguration wird ebenfalls daraus generiert, z.B. com.companyname.project-group, Maven speichert die Jar-Pakete dieses Projekts im lokalen Pfad:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- Die einzigartige ID des Projekts, es können mehrere Projekte unter einer groupId existieren, die durch artifactId unterschieden werden --> <artifactId>project</artifactId> <!-- Version --> <version>1.0</version> </project>
Gehen Sie im Befehlskontrollprogramm in MVN ein/project-Verzeichnis, führen Sie folgende Befehle aus:
C:\MVN\project>mvn help:effective-pom
Maven beginnt mit der Verarbeitung und zeigt effektive-pom。
[INFO] Durchsuchen nach Projekten... Herunterladen: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom ... [INFO] ------------------------------------------------------------------------ [INFO] BAU ERFOLGREICH [INFO] ------------------------------------------------------------------------ [INFO] Gesamte Zeit: 01:36 min [INFO] Beendet um: 2018-09-05T11:31:28+08:00 [INFO] Endliche Speicher: 15M/149M [INFO] ------------------------------------------------------------------------
Das Ergebnis des effektiven POM ist wie im Konsolenfenster angezeigt, nach der Vererbung und Interpolation, um die Konfiguration in Kraft zu setzen.
<?xml version="1.0" encoding="UTF-8"?> <!-- ================================================================= --> <!-- --> <!-- Erzeugt durch Maven Help Plugin am 2012-07-05T11:41:51 --> <!-- Siehe: http://maven.apache.org/plugins/maven-help-plugin/ --> <!-- --> <!-- ================================================================= --> <!-- ================================================================= --> <!-- --> <!-- Effektiver POM für 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</mergeId>-0</mergeId> <directory>C:\MVN\project\src\main\resources</directory>/directory> </resource> </resources> <testResources <testResource <mergeId>resource</mergeId>-1</mergeId> <directory>C:\MVN\project\src\test\resources</directory>/directory> </testResource> </testResources> <directory>C:\MVN\project\target</directory>/directory> <finalName>project</finalName>-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>/enabled> </snapshots> <id>central</id>/id> <name>Maven Repository Switchboard</name>/name> <url>http://repo1.maven.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy>/updatePolicy> </releases> <snapshots> <enabled>false</enabled>/enabled> </snapshots> <id>central</id>/id> <name>Maven Plugin Repository</name>/name> <url>http://repo1.maven.org/maven2</url> </pluginRepository> </pluginRepositories> <reporting> <outputDirectory>C:\MVN\project\target/site</outputDirectory> </reporting> </project>
In der obigen pom.xml können Sie die Standardprojektquellcodeverzeichnisstruktur, Ausgabeverzeichnis, erforderlichen Plugins, Repositories und Verzeichnisse für Berichte sehen, die Maven für die Ausführung der Ziele benötigt.
Die pom.xml-Datei von Maven muss nicht manuell erstellt werden.
Maven bietet eine Vielzahl von Prototypen-Plugins an, um Projekte zu erstellen, einschließlich des Projektstruktur und 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"> <!--Koordinaten des übergeordneten Projekts. Wenn keine Wert für ein bestimmtes Element im Projekt angegeben ist, ist der entsprechende Wert im übergeordneten Projekt die Standardwert des Projekts. Koordinaten umfassen group ID, artifact ID und version。 --> <parent> <!--被继承的父项目的构件标识符 --> <artifactId /> <!--被继承的父项目的全球唯一标识符 --> <groupId /> <!--被继承的父项目的版本 --> <version /> <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项 目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 --> <relativePath /> </parent> <!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,尽管如此,但它仍然是必不可少的,这是为了确保当Maven引入了新的特性或其他模型变更时,稳定性。 --> <modelVersion>4.0.0</modelVersion> <!--项目的全球唯一标识符,通常使用全限定的包名来区分该项目和其他项目。并且构建时生成的路径也是由此生成,例如com.mycompany.app生成的相对路径为:/com/mycompany/app --> <groupId>asia.banseon</groupId> <!-- 构件的标识符,它与group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有相同的artifact ID和group ID;在某个 在特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源码,二进制发布和WARs等。 --> <artifactId>banseon-maven2</artifactId> <!--项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,因此前面列出的不是全部构件类型。 --> <packaging>jar</packaging> <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 --> <version>1.0-SNAPSHOT</version> <!--项目的名称,通常由Maven生成的文档使用。 --> <name>banseon-maven</name> <!--项目主页的URL,通常由Maven生成的文档使用。 --> <url>http://www.baidu.com/banseon</url> <!-- 项目的详细描述,通常由Maven生成的文档使用。当该元素可以用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,因此可以包含HTML标签)。 请勿使用纯文本描述(签),建议修改您自己的索引页文件,而不是调整此处的文档以修改生成的web站点的索引页面。 --> <description>A Maven-Projekt, um Maven zu studieren.</description> <!--Beschreibt die Voraussetzungen für die Bauumgebung dieses Projekts. --> <prerequisites <!--Die niedrigste Version von Maven, die für den Bau dieses Projekts oder die Verwendung dieses Plugins erforderlich ist --> <maven /> </prerequisites> <!--Name und URL des Systems zur Problemverwaltung des Projekts (Bugzilla, Jira, Scarab oder jede andere bevorzugte Problemlösung) und dieses Beispiel ist jira --> <issueManagement <!--Name des Systems zur Problemverwaltung (z.B. jira), --> <system>jira</system> <!--URL des Systems zur Problemverwaltung, das von diesem Projekt verwendet wird --> <url>http://jira.baidu.com/banseon</url> </issueManagement> <!--Informationen über die kontinuierliche Integration des Projekts --> <ciManagement <!--Name des Continuous Integration-Systems, z.B. continuum --> <system /> <!--URL des Continuous Integration-Systems, das von diesem Projekt verwendet wird (falls das Continuous Integration-System eine Web-Schnittstelle hat). --> <url /> <!--Entwickler, die bei der Fertigstellung des Baus benachrichtigt werden müssen/Benutzer-Konfigurationen. Dies umfasst Informationen über diejenigen, die benachrichtigt werden, und die Bedingungen der Benachrichtigung (Fehler, Fehlschlag, Erfolg, Warnung) --> <notifiers <!--Konfigurieren Sie eine Methode, um Benachrichtigungen an Benutzer zu senden, wenn der Bau unterbrochen wird/Entwickler --> <notifier <!--Art der Übermittlung von Benachrichtigungen --> <type /> <!--Soll eine Benachrichtigung bei einem Fehler ausgelöst werden? --> <sendOnError /> <!--Soll eine Benachrichtigung bei einem fehlgeschlagenen Bau ausgelöst werden? --> <sendOnFailure /> <!--Soll eine Benachrichtigung bei einem erfolgreichen Bau ausgelöst werden? --> <sendOnSuccess /> <!--Soll eine Benachrichtigung bei einem Warnung ausgelöst werden? --> <sendOnWarning /> <!--Nicht empfohlen. Wohin werden die Benachrichtigungen gesendet? --> <address /> <!--Erweiterungs-Konfigurationsoptionen --> <configuration /> </notifier> </notifiers> </ciManagement> <!--Jahr der Projektgründung,4Ziffern. Diese Werte müssen verwendet werden, wenn Urheberrechtsinformationen generiert werden. --> <inceptionYear /> <!--Informationen über die E-Mail-Listen, die mit dem Projekt verbunden sind --> <mailingLists> <!--Dieser Element beschreibt alle E-Mail-Listen, die mit dem Projekt verbunden sind. Die automatisch generierte Website verwendet diese Informationen. --> <mailingList> <!--Name der E-Mail --> <name>Demo</name> <!--E-Mail-Adresse oder Link zum Senden von E-Mails, falls es sich um eine E-Mail-Adresse handelt, wird beim Erstellen des Dokuments automatisch ein mailto:-Link erstellt --> <post>[email protected]</post> <!--E-Mail-Adresse oder Link zum Abonnieren, falls es sich um eine E-Mail-Adresse handelt, wird beim Erstellen des Dokuments automatisch ein mailto:-Link erstellt --> <subscribe>[email protected]</subscribe> <!--Adresse oder Link zur Abmeldung von E-Mails, wenn es sich um eine E-Mail-Adresse handelt, wird beim Erstellen des Dokuments eine mailto:-Verknüpfung automatisch erstellt --> <unsubscribe>[email protected]</unsubscribe> <!--Die URL, über die Sie E-Mail-Informationen ansehen können --> <archive>http:/hi.baidu.com/banseon/demo/dev/</archive> </mailingList> </mailingLists> <!--Liste der Projektentwickler --> <developers <!--Informationen zu einem bestimmten Projektentwickler --> <developer <!--Der eindeutige Identifikator des Projektentwicklers im SCM --> <id>HELLO WORLD</id> <!--Vollständiger Name des Projektentwicklers --> <name>banseon</name> <!--E-Mail des Projektentwicklers --> <email>[email protected]</email> <!--Die URL der Homepage des Projektentwicklers --> <url /> <!--Rollen, die der Projektentwickler im Projekt spielt, der Rollelement beschreibt verschiedene Rollen --> <roles <role>Projektmanager</role> <role>Architekt</role> </roles> <!--Die Organisation, der der Projektentwickler angehört --> <organization>demo</organization> <!--Die URL der Organisation, der der Projektentwickler angehört --> <organizationUrl>http://hi.baidu.com/banseon</organizationUrl> <!--Eigenschaften des Projektentwicklers, wie z.B. wie Instantnachrichten behandelt werden --> <properties <dept>No</dept> </properties> <!--Die Zeitzone des Projektentwicklers, -11bis12Ganze Zahlen im Bereich. --> <timezone-5</timezone> </developer> </developers> <!--Liste der anderen Beitragenden des Projekts --> <contributors <!--Andere Beitragende des Projekts. Siehe developers/developer-Element --> <contributor <name /> <email /> <url /> <organization /> <organizationUrl /> <roles /> <timezone /> <properties /> </contributor> </contributors> <!--Dieses Element beschreibt die Liste aller Lizenzen des Projekts. Es sollte nur die Lizenzliste des Projekts aufgeführt werden, nicht die Lizenzliste der abhängigen Projekte. Wenn mehrere Lizenzen aufgeführt werden, kann der Benutzer eine davon auswählen, anstatt alle Lizenzen zu akzeptieren. --> <licenses> <!--Beschreibt die Lizenz des Projekts und wird für die Lizenzseite der Projektwebseite, einige andere Berichte und Validierungen verwendet. --> <license> <!--Lizenzname für rechtliche Zwecke --> <name>Apache 2</name> <!--URL der offiziellen Lizenztextseite --> <url>http://www.baidu.com/banseon/LICENSE-2.0.txt</url> <!--Hauptmethode der Projektverteilung: repo, kann aus Maven-Bibliotheken heruntergeladen werden manual, der Benutzer muss die Abhängigkeiten manuell herunterladen und installieren --> <distribution>repo</distribution> <!--Zusätzliche Informationen zur Lizenz --> <comments>A business-freundliche OSS Lizenz</comments> </license> </licenses> <!--SCM (Source Control Management) Tag ermöglicht es Ihnen, Ihre Codebibliothek zu konfigurieren, die von Maven Webseiten und anderen Plugins verwendet wird. --> <scm> <!--URL der SCM, die die Versionsbibliothek und den Zugriff auf die Versionsbibliothek beschreibt. Für Details siehe URL-Formate und Liste der SCM. Diese Verbindung ist nur lesbar. --> <connection> scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) </connection> <!--Für Entwickler verwendbar, ähnlich wie der connection-Element. Dies bedeutet, dass die Verbindung nicht nur lesbar ist --> <developerConnection> scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk </developerConnection> <!--Aktuelle Marke des Codes, standardmäßig HEAD im Entwicklungsstadium --> <tag /> <!--URL zur durchsuchbaren SCM-Bibliothek des Projekts (z.B. ViewVC oder Fisheye). --> <url>http://svn.baidu.com/banseon</url> </scm> <!--Beschreibt verschiedene Attribute der Organisation, zu der das Projekt gehört. Dokumente, die von Maven generiert werden, verwenden --> <organization> <!--Vollständiger Name der Organisation --> <name>demo</name> <!--URL der Organisations-Startseite --> <url>http://www.baidu.com/banseon</url> </organization> <!--Benötigte Informationen für das Bauen des Projekts --> <build <!--Dieses Element legt den Verzeichnisordner für die Quellcodes fest. Wenn ein Projekt gebaut wird, komprimiert das Bau-System die Quellcodes im Verzeichnis. Dieser Pfad ist relativ zu pom.xml. --> <sourceDirectory /> <!--Dieser Elemente legt den Verzeichnisordner für die Skriptquellcodes fest, der Verzeichnisordner ist unterschiedlich: In den meisten Fällen wird der Inhalt des Verzeichnisses in den Ausgabeordner kopiert (weil die Skripte interpretiert werden, nicht jedoch kompiliert). --> <scriptSourceDirectory /> <!--该元素设置了项目单元测试使用的源码目录,当测试项目时,构建系统会编译目录中的源码。该路径是相对于pom.xml的相对路径。 --> <testSourceDirectory /> <!--编译过的应用程序class文件存放的目录。 --> <outputDirectory /> <!--编译过的测试class文件存放的目录。 --> <testOutputDirectory /> <!--使用来自该项目的一系列构建扩展 --> <extensions> <!--描述使用的构建扩展。 --> <extension> <!--构建扩展的groupId --> <groupId /> <!--构建扩展的artifactId --> <artifactId /> <!--构建扩展的版本 --> <version /> </extension> </extensions> <!--当项目未指定目标(Maven2 称为阶段时的默认值 --> <defaultGoal /> <!--此元素描述了项目相关的所有资源路径列表,例如与项目相关的属性文件,这些资源包含在最终的打包文件中。 --> <resources <!--此元素描述了项目相关或测试相关的所有资源路径 --> <resource <!-- 描述了资源的目标路径。该路径相对于target/classes目录(例如${project.build.outputDirectory})。举例 子,如果您想资源在特定的包中(org.apache.maven.messages),则必须将该元素设置为org/apache/maven /messages。然而,如果您只是想将资源放入源码目录结构中,则不需要此配置。 --> <targetPath /> <!--是否使用参数值代替参数名。参数值来自properties元素或列在filters元素中的文件中配置的属性,文件在filters元素中列出。 --> <filtering /> <!--描述存放资源的目录,该路径相对于POM路径 --> <directory /> <!--包含的模式列表,例如**/*.xml. --> <includes /> <!--排除的模式列表,例如**/*.xml --> <excludes /> </resource> </resources> <!--此元素描述了与单元测试相关的所有资源路径,例如与单元测试相关的属性文件。 --> <testResources <!--此元素描述了与测试相关的所有资源路径,参见build。/resources/resource元素的说明 --> <testResource <targetPath /> <filtering /> <directory /> <includes /> <excludes /> </testResource> </testResources> <!--构建生成的所有文件存放的目录 --> <directory /> <!--生成的构件的文件名,默认值为${artifactId}-${version}。 --> <finalName /> <!--当filtering开关开启时,使用的过滤器属性文件列表 --> <filters /> <!--默认插件信息,子项目可以引用。此插件配置选项在引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都将覆盖此处配置。 --> <pluginManagement <!--使用的插件列表。 --> <plugins> <!--plugin元素包含了描述插件所需信息的部分。 --> <plugin> <!--插件在仓库中的group ID --> <groupId /> <!--Artifact-ID des Plugins im Repository --> <artifactId /> <!--Version (oder Versionsbereich) des verwendeten Plugins --> <version /> <!--Ob Maven-Erweiterungen (z.B. Packaging und Typen-Verarbeiter) von diesem Plugin heruntergeladen werden, aufgrund von Performance-Gründen wird dieses Element nur dann auf enabled gesetzt, wenn es wirklich erforderlich ist. --> <extensions /> <!--Konfiguration zur Ausführung einer Gruppe von Zielen im Bau-Lebenszyklus. Jedes Ziel kann unterschiedliche Konfigurationen haben. --> <executions <!--Der execution-Element enthält Informationen, die für die Ausführung des Plugins erforderlich sind --> <execution <!--Identifikator des Ausführungszieles, der verwendet wird, um Ziele im Bau-Prozess zu identifizieren oder Ziele zu matchen, die während der Vererbung zusammengefügt werden müssen --> <id /> <!--Bindet den Zieltyp an die Phase des Bau-Lebenszyklus, wenn er weggelassen wird, wird der Zieltyp an die Standardphase der in den Quelldaten konfigurierten Quelle gebunden --> <phase /> <!--Ausführungziel der Konfiguration --> <goals /> <!--Ob die Konfiguration an die Unter-POM weitergegeben wird --> <inherited /> <!--Als Konfigurationsobjekt im DOM --> <configuration /> </execution> </executions> <!--Zusätzliche Abhängigkeiten, die von Plugins benötigt werden, um Projekte einzuführen --> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <!--Ob jede Konfiguration auf die Unterprojekte übertragen wird --> <inherited /> <!--Als Konfigurationsobjekt im DOM --> <configuration /> </plugin> </plugins> </pluginManagement> <!--Liste der verwendeten Plugins --> <plugins> <!--Siehe build/pluginManagement/plugins/plugin-Element --> <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> <!--In der Liste der Projekte aufgelistete Bauprofile, die, wenn sie aktiviert werden, die Bauverarbeitung ändern --> <profiles> <!--Aktiviert eine bestimmte Bauverarbeitung basierend auf Umgebungsparametern oder Befehlszeilenparametern --> <profile> <!--Eindeutiger Bezeichner der Baukonfiguration. Wird sowohl für die Befehlszeilenaktivierung als auch für die Kombination von Profile mit gleichem Bezeichner bei der Vererbung verwendet. --> <id /> <!--Logische Bedingungen, die das Profil automatisch aktivieren. Activation ist der Schlüssel zum Öffnen des Profiles. Die Kraft des Profiles liegt darin, dass es bestimmte Werte in bestimmten Umgebungen automatisch verwenden kann; diese Umgebungen werden durch das Activation-Element spezifiziert. Das Activation-Element ist nicht der einzige Weg, um das Profil zu aktivieren. --> <activation> <!--Zeichen, ob das Profil standardmäßig aktiviert wird --> <activeByDefault /> <!--Wenn das zugehörige JDK erkannt wird, wird das Profil aktiviert. Zum Beispiel,1.4Aktiviert JDK1.4,1.4.0_2, sondern!1.4Aktiviert alle Versionen, die nicht mit1.4Erste JDK. --> <jdk /> <!--Wenn das zugehörige Betriebssystem-Attribut erkannt wird, wird das Profil aktiviert. Das os-Element kann einige Betriebssystembezogene Attribute definieren. --> <os> <!--Aktivierungsprofil-Operating-System-Name --> <name>Windows XP</name> <!--Aktivierungsprofil-Operating-System-Familie (z.B. 'windows') --> <family>Windows</family> <!--Aktivierungsprofil-Operating-System-Architektur --> <arch>x86</arch> <!--Aktivierungsprofil-Operating-System-Version --> <version>5.1.2600</version> </os> <!--Wenn Maven eine bestimmte Eigenschaft (deren Wert durch ${Name} im POM referenziert werden kann) erkennt, wird eine zugehörige Bezeichnung und ein Wert zugeordnet, und das Profil wird aktiviert. Wenn das Wertfeld leer ist, wird das Profil aktiviert, wenn das Eigenschaftsnamefeld existiert, andernfalls wird auf Groß-/Kleinschreibung bezogen auf das Wertfeld gematcht. --> <property> <!--Name der Eigenschaft, die das Profil aktiviert --> <name>mavenVersion</name> <!--Wert der Eigenschaft, die das Profil aktiviert --> <value2.0.3</value> </property> <!--Geben Sie einen Dateinamen an, um das Profil durch Überprüfung der Existenz oder Nichtexistenz der Datei zu aktivieren. Missing überprüft, ob die Datei existiert, und aktiviert das Profil, wenn sie nicht existiert. Andererseits überprüft exists, ob die Datei existiert, und aktiviert das Profil, wenn sie existiert. --> <file <!--Wenn die angegebene Datei existiert, wird das Profil aktiviert. --> <exists/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists> <!--Wenn die angegebene Datei nicht existiert, wird das Profil aktiviert. --> <missing/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </missing> </file> </activation> <!--Informationen, die für die Konstruktion des Projekts erforderlich sind. Siehe das Element 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> <!--Siehe build/pluginManagement/plugins/plugin-Element --> <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> <!--Siehe build/pluginManagement/plugins/plugin-Element --> <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> <!--Module (manchmal auch als Unterprojekte bezeichnet) werden als Teil des Projekts gebaut. Jeder Modul-Element ist ein relativer Pfad zum Verzeichnis des Moduls --> <modules /> <!--Liste der Remote-Repositorys, in denen Abhängigkeiten und Erweiterungen gefunden werden --> <repositories> <!--Siehe repositories/repository元素 --> <repository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> </releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <id /> <name /> <url /> <layout /> </repository> </repositories> <!--Liste der Remote-Repositorys, in denen Plugins gefunden werden, die für den Bau und die Berichterstellung verwendet werden --> <pluginRepositories> <!--Enthält Informationen, die für die Verbindung zu Remote-Plugin-Repositorys erforderlich sind. Siehe repositories/repository元素 --> <pluginRepository> <releases> <enabled /> <updatePolicy /> <checksumPolicy /> </releases> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <id /> <name /> <url /> <layout /> </pluginRepository> </pluginRepositories> <!--This element describes all dependencies related to the project. These dependencies make up the links in the project build process. They are automatically downloaded from the repositories defined in the project. For more information, please see the project dependency mechanism. --> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <!--Nicht empfohlen. Maven ignoriert dieses Element jetzt. --> <reports /> <!--Dieses Element enthält die Normen für die Erstellung von Berichten durch Berichtsplugine. Wenn der Benutzer "mvn site" ausführt, werden diese Berichte ausgeführt. Alle Berichte sind im Navigationsleisten der Seite als Links sichtbar. Siehe das Element reporting --> <reporting> ...... </reporting> <!--Siehe das Element dependencyManagement --> <dependencyManagement> <dependencies> <!--参见dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> </dependencyManagement> <!--Siehe das Element distributionManagement --> <distributionManagement> ...... </distributionManagement> <!--Siehe properties-Element --> <properties /> </profile> </profiles> <!--Module (manchmal auch als Unterprojekte bezeichnet) werden als Teil des Projekts gebaut. Jeder Modul-Element ist ein relativer Pfad zum Verzeichnis des Moduls --> <modules /> <!--Liste der Remote-Repositorys, in denen Abhängigkeiten und Erweiterungen gefunden werden --> <repositories> <!--Enthält Informationen, die für die Verbindung zu Remote-Repositories erforderlich sind --> <repository> <!--wie die Download von Veröffentlichungen aus Remote-Repositories behandelt werden sollen --> <releases> <!--true oder false, ob das Repository den Download einer bestimmten Art von Komponenten (Veröffentlichungen, Snapshots) aktiviert. --> <enabled /> <!--Dieser Element gibt die Häufigkeit der Aktualisierungen an. Maven vergleicht die Zeitstempel des lokalen POM und des Remote-POM. Die Optionen sind: always (immer), daily (Standard, täglich), interval: X (hier X ist die Zeitintervalle in Minuten) oder never (nie). --> <updatePolicy /> <!--Wie soll Maven verfahren, wenn die Überprüfung der Komponenten-Prüfdateien fehlschlägt: ignore (ignorieren), fail (fehlerhaft), oder warn (warnt). --> <checksumPolicy /> </releases> <!-- wie Snapshots aus Remote-Repositories heruntergeladen werden sollen. Mit den两组配置releases und snapshots kann das POM für jede Art von Komponente in jedem einzelnen Repository unterschiedliche Strategien anwenden Strategie. Zum Beispiel könnte jemand beschließen, nur den Support für die Download von Snapshots für Entwicklungszwecke zu aktivieren. Siehe repositories/repository/releases-Element --> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <!--Einzigartiger Identifikator des Remote-Repositorys. Er kann verwendet werden, um das Remote-Repository zu matchen, das in der Datei settings.xml konfiguriert ist --> <id>banseon-repository-proxy</id> <!--Name des Remote-Repositorys --> <name>banseon-repository-proxy</name> <!--URL des Remote-Repositorys, gemäß Protokoll://hostname/path形式 --> <url>http://192.168.1.169:9999/repository/</url> <!-- Repository-Layout-Typ, der zur Lokalisierung und Sortierung von Komponenten verwendet wird-kann default (Standard) oder legacy (veraltet) sein. Maven 2bietet eine Standardanordnung für seine Repositorys; aber Und Maven 1.x hat eine unterschiedliche Anordnung. Wir können mit diesem Element angeben, ob die Anordnung default (Standard) oder legacy (veraltet) ist. --> <layout>default</layout> </repository> </repositories> <!--Liste der Remote-Repositorys, in denen Plugins gefunden werden, die für den Bau und die Berichterstellung verwendet werden --> <pluginRepositories> <!--Enthält Informationen, die für die Verbindung zu Remote-Plugin-Repositorys erforderlich sind. Siehe repositories/repository元素 --> <pluginRepository> ...... </pluginRepository> </pluginRepositories> <!--This element describes all dependencies related to the project. These dependencies make up the links in the project build process. They are automatically downloaded from the repositories defined in the project. For more information, please see the project dependency mechanism. --> <dependencies> <dependency> <!--Dependency group ID --> <groupId>org.apache.maven</groupId> <!--Dependency artifact ID --> <artifactId>maven-artifact</artifactId> <!--Dependency version number. In Maven 2can also be configured as a version range. --> <version>3.8.1</version> <!-- Dependency type, the default type is jar. It usually represents the file extension of the dependency, but there are exceptions. A type can be mapped to another extension or classifier. The type often corresponds to the packaging method used. Although there are exceptions to this. Some type instances: jar, war, ejb-client and test-jar. If extensions is set to true, new types can be defined in the plugin. Therefore, the instance of the type before is incomplete. --> <type>jar</type> <!-- Dependency classifiers. Classifiers can distinguish artifacts that belong to the same POM but are built in different ways. The classifier name is appended to the file name version number. For example, if you want to build two separate artifacts into JAR, one using Java 1.4With another compiler, using Java 6With a compiler, you can use classifiers to generate two separate JAR artifacts. --> <classifier></classifier> <!--Dependency scope. It helps determine which artifacts are included during the project release process. For more details, please refer to the dependency mechanism. - compile: Default scope, used for compilation. - provided: Similar to compilation, but supports the JDK or container to provide, similar to classpath. - runtime: Required during execution. - test: Used when performing test tasks. - system: Requires an external element to be provided. It can be obtained through systemPath. - systemPath: Used only for the system scope. Provide the corresponding path. - optional: Indicates whether the dependency is transitive when the project itself is dependent. Used for consecutive dependencies. --> <scope>test</scope> <!--Only for system scope use. Note that the use of this element is not encouraged, and it may be overridden in new versions. This element specifies a file system path for dependencies. An absolute path is required instead of a relative path. It is recommended to use property matching absolute paths, such as ${java.home}. --> <systemPath></systemPath> <!--Wenn die transitive Abhängigkeiten berechnet werden, werden die von der Liste der Abhängigkeitskomponenten ausgeschlossenen Abhängigkeitskomponentensammlungen aufgeführt. Dies bedeutet, dass Maven dir sagt, dass du nur auf das spezifische Projekt angewiesen bist und nicht auf die Abhängigkeiten des Projekts. Dieses Element wird hauptsächlich zur Lösung von Versionskonflikten verwendet --> <exclusions> <exclusion> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> <!--Optionale Abhängigkeiten, wenn du im Projekt B die Abhängigkeit C als optional erklärst, musst du die Abhängigkeit von C im Projekt, das auf B angewiesen ist (z.B. Projekt A), explizit referenzieren. Optionale Abhängigkeiten unterbrechen die Transitive Abhängigkeit. --> <optional>true</optional> </dependency> </dependencies> <!--Nicht empfohlen. Maven ignoriert dieses Element jetzt. --> <reports></reports> <!--Dieses Element beschreibt die Spezifikation zur Erstellung von Berichten mit Bericht plugins. Wenn der Benutzer "mvn site" ausführt, werden diese Berichte ausgeführt. Auf der Navigationsleiste sind Links zu allen Berichten sichtbar. --> <reporting> <!--true, dann wird die Website keine Standardberichte enthalten. Dies umfasst Berichte im "Projektinformation"-Menü. --> <excludeDefaults /> <!--Wo alle generierten Berichte gespeichert werden. Standardwert ist ${project.build.directory}/site. --> <outputDirectory /> <!--Verwendete Bericht plugins und ihre Konfigurationen. --> <plugins> <!--Der plugin-Element enthält Informationen, die für die Beschreibung des Bericht plugins erforderlich sind --> <plugin> <!--Group-ID des Bericht plugins im Repository --> <groupId /> <!--Artifact-ID des Bericht plugins im Repository --> <artifactId /> <!--Version (oder Versionsbereich) des verwendeten Bericht plugins --> <version /> <!--Ob jede Konfiguration auf die Unterprojekte übertragen wird --> <inherited /> <!--Konfiguration des Bericht plugins --> <configuration /> <!--Mehrfache Spezifikationen einer Gruppe von Berichten, bei denen jede Spezifikation möglicherweise unterschiedliche Konfigurationen haben kann. Eine Spezifikation (Berichtssammlung) entspricht einem Ausführungsziel. Zum Beispiel gibt es1,2,3,4,5,6,7,8,9Berichte.1,2,5Bergibt die Berichtssammlung A, die einem Ausführungsziel entspricht.2,5,8Bergibt die Berichtssammlung B, die einem anderen Ausführungsziel entspricht --> <reportSets> <!--Darstellt eine Sammlung von Berichten und die Konfiguration, die zur Erstellung dieser Sammlung verwendet wird --> <reportSet> <!--Eindeutiger Identifikator der Berichtssammlung, der bei der Vererbung durch POM verwendet wird --> <id /> <!--Konfiguration der Berichte, die bei der Erstellung der Berichtssammlung verwendet werden --> <configuration /> <!--Wird die Konfiguration auf die Unter-POMs übertragen? --> <inherited /> <!--In dieser Sammlung verwendete Berichte --> <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 der Projekt-Downloadseite. Wenn dieses Element nicht vorhanden ist, sollte der Benutzer die Hauptseite konsultieren. Der Grund für die Verwendung dieses Elements ist: Hilfe bei der Lokalisierung von Komponenten, die nicht im Repository vorhanden sind (aufgrund von Lizenzbeschränkungen). --> <downloadUrl /> <!--Wenn die Komponente eine neue group ID und artifact ID hat (die Komponente wurde an einen neuen Ort verschoben), werden hier die Informationen zur Neuer定位 aufgeführt. --> <relocation> <!--neue group ID der Komponente --> <groupId /> <!--neue artifact ID der Komponente --> <artifactId /> <!--neue Versionsnummer der Komponente --> <version /> <!--An den Benutzer anzuzeigende zusätzliche Informationen über die Verschiebung, z.B. aus Gründen. --> <message /> </relocation> <!-- gibt den Status der Komponente im Remote-Repository an. Dieses Element sollte im lokalen Projekt nicht konfiguriert werden, da dies von den Werkzeugen automatisch aktualisiert wird. Gültige Werte sind: none(Standard),converted(der Repository-Administrator hat von Maven 1 POM übernommen),partner(直接从伙伴Maven 2synchronisiert aus dem Repository),deployed(从Maven 2Beispiel-Deployment),verified(被核实时正确的和最终的)。 --> <status /> </distributionManagement> <!--Ersetzen Sie den Namen durch einen Wert, Properties können im gesamten POM verwendet werden und auch als Auslösebedingungen (siehe die Beschreibung des Elements activation in der Datei settings.xml) dienen. Das Format ist <name>value</name>。 --> <properties /> </project>