Maven配置文件POM屬性最全詳解

注:本文內容來源於: BlueKitty1210Maven配置文件POM屬性最全詳解java


<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">

    <!-- 父項目的座標 . 若是項目中沒有規定某個元素的值 , 那麼父項目中的對應值即爲項目的默認值 .  座標包括group ID , artifact ID和 version .  -->
    <parent>
        <artifactId>com.xbz</artifactId><!-- 被繼承的父項目的構件標識符 -->
        <groupId>parent</groupId><!-- 被繼承的父項目的全球惟一標識符 -->
        <version>1.0.0</version><!-- 被繼承的父項目的版本 -->
        <relativePath>../pom.xml</relativePath><!--  父項目的pom.xml文件的相對路徑 . 相對路徑容許你選擇一個不一樣的路徑 . 默認值是../pom.xml . Maven首先在構建當前項目的地方尋找父項 目的pom , 其次在文件系統的這個位置(relativePath位置) , 而後在本地倉庫 , 最後在遠程倉庫尋找父項目的pom .  -->
    </parent>

    <modelVersion>4.0.0</modelVersion><!-- 聲明項目描述符遵循哪個POM模型版本 . 模型自己的版本不多改變 , 雖然如此 , 但它仍然是必不可少的 , 這是爲了當Maven引入了新的特性或者其餘模型變動的時候 , 確保穩定性 .  -->
    <groupId>asia.banseon</groupId><!-- 項目的全球惟一標識符 , 一般使用全限定的包名區分該項目和其餘項目 . 而且構建時生成的路徑也是由今生成 ,  如com.mycompany.app生成的相對路徑爲:/com/mycompany/app -->
    <artifactId>banseon-maven2
    </artifactId><!--  構件的標識符 , 它和group ID一塊兒惟一標識一個構件 . 換句話說 , 你不能有兩個不一樣的項目擁有一樣的artifact ID和groupID;在某個 特定的group ID下 , artifact ID也必須是惟一的 . 構件是項目產生的或使用的一個東西 , Maven爲項目產生的構件包括:JARs , 源 碼 , 二進制發佈和WARs等 .  -->
    <packaging>jar</packaging><!-- 項目產生的構件類型 , 例如jar, war, ear, pom . 插件能夠建立他們本身的構件類型 , 因此前面列的不是所有構件類型 -->
    <version>1.0-SNAPSHOT</version><!-- 項目當前版本 , 格式爲:主版本.次版本.增量版本-限定版本號 -->
    <name>banseon-maven</name><!-- 項目的名稱, Maven產生的文檔用 -->
    <url>http://www.baidu.com/banseon</url><!-- 項目主頁的URL, Maven產生的文檔用 -->
    <description>A maven project to study maven.
    </description><!--  項目的詳細描述, Maven 產生的文檔用 .   當這個元素可以用HTML格式描述時(例如 , CDATA中的文本會被解析器忽略 , 就能夠包含HTML標 籤) ,  不鼓勵使用純文本描述 . 若是你須要修改產生的web站點的索引頁面 , 你應該修改你本身的索引頁文件 , 而不是調整這裏的文檔 .  -->

    <!-- 描述了這個項目構建環境中的前提條件 .  -->
    <prerequisites>
        <maven>2.0.3</maven><!-- 構建該項目或使用該插件所須要的Maven的最低版本 -->
    </prerequisites>

    <!-- 項目的問題管理系統(Bugzilla, Jira, Scarab,或任何你喜歡的問題管理系統)的名稱和URL , 本例爲 jira -->
    <issueManagement>
        <system>jira</system><!-- 問題管理系統(例如jira)的名字 ,  -->
        <url>http://my.jira.com/banseon</url><!-- 該項目使用的問題管理系統的URL -->
    </issueManagement>

    <!-- 項目持續集成信息 -->
    <ciManagement>
        <system></system><!-- 持續集成系統的名字 , 例如continuum -->
        <url></url><!-- 該項目使用的持續集成系統的URL(若是持續集成系統有web接口的話) .  -->

        <!-- 構建完成時 , 須要通知的開發者/用戶的配置項 . 包括被通知者信息和通知條件(錯誤 , 失敗 , 成功 , 警告) -->
        <notifiers>
            <!-- 配置一種方式 , 當構建中斷時 , 以該方式通知用戶/開發者 -->
            <notifier>
                <type></type><!-- 傳送通知的途徑 -->
                <sendOnError></sendOnError><!-- 發生錯誤時是否通知 -->
                <sendOnFailure></sendOnFailure><!-- 構建失敗時是否通知 -->
                <sendOnSuccess></sendOnSuccess><!-- 構建成功時是否通知 -->
                <sendOnWarning></sendOnWarning><!-- 發生警告時是否通知 -->
                <address></address><!-- 不同意使用 . 通知發送到哪裏 -->
                <configuration></configuration><!-- 擴展配置項 -->
            </notifier>
        </notifiers>
    </ciManagement>

    <inceptionYear></inceptionYear><!-- 項目建立年份 , 4位數字 . 當產生版權信息時須要使用這個值 .  -->

    <!-- 項目相關郵件列表信息 -->
    <mailingLists>
        <!-- 該元素描述了項目相關的全部郵件列表 . 自動產生的網站引用這些信息 .  -->
        <mailingList>
            <name>XMail</name><!-- 郵件的名稱 -->
            <post>xingxbz@163.com</post><!-- 發送郵件的地址或連接 , 若是是郵件地址 , 建立文檔時 , mailto: 連接會被自動建立 -->
            <subscribe>xingxbz@163.com</subscribe><!-- 訂閱郵件的地址或連接 , 若是是郵件地址 , 建立文檔時 , mailto: 連接會被自動建立 -->
            <unsubscribe>xingxbz@163.com</unsubscribe><!-- 取消訂閱郵件的地址或連接 , 若是是郵件地址 , 建立文檔時 , mailto: 連接會被自動建立 -->
            <archive>http:/xingmail.com/demo/mail/</archive><!-- 你能夠瀏覽郵件信息的URL -->
        </mailingList>
    </mailingLists>

    <!-- 項目開發者列表 -->
    <developers>
        <!-- 某個項目開發者的信息 -->
        <developer>
            <id>DEV 001</id><!-- SCM裏項目開發者的惟一標識符 -->
            <name>Xingbz</name><!-- 項目開發者的全名 -->
            <email>xingxbz@163.com</email><!-- 項目開發者的email -->
            <url>https://blog.csdn.net/xingbaozhen1210</url><!-- 項目開發者的主頁的URL -->

            <!-- 項目開發者在項目中扮演的角色 , 角色元素描述了各類角色 -->
            <roles>
                <role>Manager</role>
                <role>Test</role>
                <role>Dev</role>
            </roles>

            <organization>xbz</organization><!-- 項目開發者所屬組織 -->

            <organizationUrl>https://blog.csdn.net/xingbaozhen1210</organizationUrl><!-- 項目開發者所屬組織的URL -->

            <!-- 項目開發者屬性 , 如即時消息如何處理等 -->
            <properties>
                <dept>No</dept>
            </properties>
            <timezone>+8</timezone><!-- 項目開發者所在時區 ,  -11到12範圍內的整數 .  -->
        </developer>
    </developers>

    <!-- 項目的其餘貢獻者列表 -->
    <contributors>
        <!-- 項目的其餘貢獻者 . 參見developers/developer元素 -->
        <contributor>
            <name></name>
            <email></email>
            <url></url>
            <organization></organization>
            <organizationUrl></organizationUrl>
            <roles></roles>
            <timezone></timezone>
            <properties></properties>
        </contributor>
    </contributors>

    <!-- 該元素描述了項目全部License列表 .  應該只列出該項目的license列表 , 不要列出依賴項目的 license列表 . 若是列出多個license , 用戶能夠選擇它們中的一個而不是接受全部license .  -->
    <licenses>
        <!-- 描述了項目的license , 用於生成項目的web站點的license頁面 , 其餘一些報表和validation也會用到該元素 .  -->
        <license>
            <name>Xbz Projet</name><!-- license用於法律上的名稱 -->
            <url>https://blog.csdn.net/xingbaozhen1210</url><!-- 官方的license正文頁面的URL -->
            <distribution>repo</distribution><!-- 項目分發的主要方式: repo , 能夠從Maven庫下載 manual ,  用戶必須手動下載和安裝依賴 -->
            <comments>ABCDEFG...</comments><!-- 關於license的補充信息 -->
        </license>
    </licenses>

    <!-- SCM(Source Control Management)標籤容許你配置你的代碼庫 , 供Maven web站點和其它插件使用 .  -->
    <scm>
        <connection>scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)
        </connection><!-- SCM的URL,該URL描述了版本庫和如何鏈接到版本庫 . 欲知詳情 , 請看SCMs提供的URL格式和列表 . 該鏈接只讀 .  -->
        <developerConnection>scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk</developerConnection><!-- 給開發者使用的 , 相似connection元素 . 即該鏈接不只僅只讀 -->
        <tag></tag><!-- 當前代碼的標籤 , 在開發階段默認爲HEAD -->
        <url>http://svn.baidu.com/banseon</url><!-- 指向項目的可瀏覽SCM庫(例如ViewVC或者Fisheye)的URL .  -->
    </scm>

    <!-- 描述項目所屬組織的各類屬性 . Maven產生的文檔用 -->
    <organization>
        <name>demo</name><!-- 組織的全名 -->
        <url>http://www.baidu.com/banseon</url><!-- 組織主頁的URL -->
    </organization>

    <!-- 構建項目須要的信息 -->
    <build>
        <sourceDirectory></sourceDirectory><!-- 該元素設置了項目源碼目錄 , 當構建項目的時候 , 構建系統會編譯目錄裏的源碼 . 該路徑是相對於pom.xml的相對路徑 .  -->
        <scriptSourceDirectory></scriptSourceDirectory><!-- 該元素設置了項目腳本源碼目錄 , 該目錄和源碼目錄不一樣:絕大多數狀況下 , 該目錄下的內容 會被拷貝到輸出目錄(由於腳本是被解釋的 , 而不是被編譯的) .  -->
        <testSourceDirectory></testSourceDirectory><!-- 該元素設置了項目單元測試使用的源碼目錄 , 當測試項目的時候 , 構建系統會編譯目錄裏的源碼 . 該路徑是相對於pom.xml的相對路徑 .  -->
        <outputDirectory></outputDirectory><!-- 被編譯過的應用程序class文件存放的目錄 .  -->
        <testOutputDirectory></testOutputDirectory><!-- 被編譯過的測試class文件存放的目錄 .  -->

        <!-- 使用來自該項目的一系列構建擴展 -->
        <extensions>
            <!-- 描述使用到的構建擴展 .  -->
            <extension>
                <groupId></groupId><!-- 構建擴展的groupId -->
                <artifactId></artifactId><!-- 構建擴展的artifactId -->
                <version></version><!-- 構建擴展的版本 -->
            </extension>
        </extensions>
        <defaultGoal></defaultGoal><!-- 當項目沒有規定目標(Maven2 叫作階段)時的默認值 -->

        <!-- 這個元素描述了項目相關的全部資源路徑列表 , 例如和項目相關的屬性文件 , 這些資源被包含在最終的打包文件裏 .  -->
        <resources>
            <!-- 這個元素描述了項目相關或測試相關的全部資源路徑 -->
            <resource>
                <targetPath></targetPath><!--  描述了資源的目標路徑 . 該路徑相對target/classes目錄(例如${project.build.outputDirectory}) . 舉個例 子 , 若是你想資源在特定的包裏(org.apache.maven.messages) , 你就必須該元素設置爲org/apache/maven /messages . 然而 , 若是你只是想把資源放到源碼目錄結構裏 , 就不須要該配置 .  -->
                <filtering></filtering><!-- 是否使用參數值代替參數名 . 參數值取自properties元素或者文件裏配置的屬性 , 文件在filters元素裏列出 .  -->
                <directory></directory><!-- 描述存放資源的目錄 , 該路徑相對POM路徑 -->
                <includes></includes><!-- 包含的模式列表 , 例如**/*.xml. -->
                <excludes></excludes><!-- 排除的模式列表 , 例如**/*.xml -->
            </resource>
        </resources>

        <!-- 這個元素描述了單元測試相關的全部資源路徑 , 例如和單元測試相關的屬性文件 .  -->
        <testResources>
            <!-- 這個元素描述了測試相關的全部資源路徑 , 參見build/resources/resource元素的說明 -->
            <testResource>
                <targetPath></targetPath>
                <filtering></filtering>
                <directory></directory>
                <includes></includes>
                <excludes></excludes>
            </testResource>
        </testResources>


        <directory></directory><!-- 構建產生的全部文件存放的目錄 -->
        <finalName></finalName><!-- 產生的構件的文件名 , 默認值是${artifactId}-${version} .  -->
        <filters></filters><!-- 當filtering開關打開時 , 使用到的過濾器屬性文件列表 -->

        <!-- 子項目能夠引用的默認插件信息 . 該插件配置項直到被引用時纔會被解析或綁定到生命週期 . 給定插件的任何本地配置都會覆蓋這裏的配置 -->
        <pluginManagement>
            <!-- 使用的插件列表  .  -->
            <plugins>
                <!-- plugin元素包含描述插件所須要的信息 .  -->
                <plugin>
                    <groupId></groupId><!-- 插件在倉庫裏的group ID -->
                    <artifactId></artifactId><!-- 插件在倉庫裏的artifact ID -->
                    <version></version><!-- 被使用的插件的版本(或版本範圍) -->
                    <extensions></extensions><!-- 是否從該插件下載Maven擴展(例如打包和類型處理器) , 因爲性能緣由 , 只有在真須要下載時 , 該元素才被設置成enabled .  -->

                    <!-- 在構建生命週期中執行一組目標的配置 . 每一個目標可能有不一樣的配置 .  -->
                    <executions>
                        <!-- execution元素包含了插件執行須要的信息 -->
                        <execution>
                            <id></id><!-- 執行目標的標識符 , 用於標識構建過程當中的目標 , 或者匹配繼承過程當中須要合併的執行目標 -->
                            <phase></phase><!-- 綁定了目標的構建生命週期階段 , 若是省略 , 目標會被綁定到源數據裏配置的默認階段 -->
                            <goals></goals><!-- 配置的執行目標 -->
                            <inherited></inherited><!-- 配置是否被傳播到子POM -->
                            <configuration></configuration><!-- 做爲DOM對象的配置 -->
                        </execution>
                    </executions>
                    <!-- 項目引入插件所須要的額外依賴 -->
                    <dependencies>
                        <!-- 參見dependencies/dependency元素 -->
                        <dependency>
                            ......
                        </dependency>
                    </dependencies>

                    <inherited></inherited><!-- 任何配置是否被傳播到子項目 -->
                    <configuration></configuration><!-- 做爲DOM對象的配置 -->
                </plugin>
            </plugins>
        </pluginManagement>

        <!-- 使用的插件列表 -->
        <plugins>
            <!-- 參見build/pluginManagement/plugins/plugin元素 -->
            <plugin>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
                <extensions></extensions>
                <executions>
                    <execution>
                        <id></id>
                        <phase></phase>
                        <goals></goals>
                        <inherited></inherited>
                        <configuration></configuration>
                    </execution>
                </executions>
                <dependencies>
                    <!-- 參見dependencies/dependency元素 -->
                    <dependency>
                        ......
                    </dependency>
                </dependencies>
                <goals></goals>
                <inherited></inherited>
                <configuration></configuration>
            </plugin>
        </plugins>
    </build>

    <!-- 在列的項目構建profile , 若是被激活 , 會修改構建處理 -->
    <profiles>
        <!-- 根據環境參數或命令行參數激活某個構建處理 -->
        <profile>
            <id></id><!-- 構建配置的惟一標識符 . 即用於命令行激活 , 也用於在繼承時合併具備相同標識符的profile .  -->
            <!-- 自動觸發profile的條件邏輯 . Activation是profile的開啓鑰匙 . profile的力量來自於它
            可以在某些特定的環境中自動使用某些特定的值;這些環境經過activation元素指定 . activation元素並非激活profile的惟一方式 .  -->

            <activation>
                <activeByDefault></activeByDefault><!-- profile默認是否激活的標誌 -->
                <jdk></jdk><!-- 當匹配的jdk被檢測到 , profile被激活 . 例如 , 1.4激活JDK1.4 , 1.4.0_2 , 而!1.4激活全部版本不是以1.4開頭的JDK .  -->

                <!-- 當匹配的操做系統屬性被檢測到 , profile被激活 . os元素能夠定義一些操做系統相關的屬性 .  -->
                <os>
                    <name>Windows 7</name><!-- 激活profile的操做系統的名字 -->
                    <family>Windows</family><!-- 激活profile的操做系統所屬家族(如 'windows') -->
                    <arch>x64</arch><!-- 激活profile的操做系統體系結構  -->
                    <version>7.2.3580</version><!-- 激活profile的操做系統版本 -->
                </os>

                <!-- 若是Maven檢測到某一個屬性(其值能夠在POM中經過${名稱}引用) , 其擁有對應的名稱和值 , Profile就會被激活 . 若是值
                字段是空的 , 那麼存在屬性名稱字段就會激活profile , 不然按區分大小寫方式匹配屬性值字段 -->
                <property>
                    <name>mavenVersion</name><!-- 激活profile的屬性的名稱 -->
                    <value>2.0.3</value><!-- 激活profile的屬性的值 -->
                </property>

                <!-- 提供一個文件名 , 經過檢測該文件的存在或不存在來激活profile . missing檢查文件是否存在 , 若是不存在則激活
                profile . 另外一方面 , exists則會檢查文件是否存在 , 若是存在則激活profile .  -->
                <file>
                    <exists>/usr/local/xbz/workspace/</exists><!-- 若是指定的文件存在 , 則激活profile .  -->
                    <missing>/usr/local/xbz/workspace/</missing><!-- 若是指定的文件不存在 , 則激活profile .  -->
                </file>
            </activation>

            <!-- 構建項目所須要的信息 . 參見build元素 -->
            <build>
                <defaultGoal></defaultGoal>
                <resources>
                    <resource>
                        <targetPath></targetPath>
                        <filtering></filtering>
                        <directory></directory>
                        <includes></includes>
                        <excludes></excludes>
                    </resource>
                </resources>
                <testResources>
                    <testResource>
                        <targetPath></targetPath>
                        <filtering></filtering>
                        <directory></directory>
                        <includes></includes>
                        <excludes></excludes>
                    </testResource>
                </testResources>
                <directory></directory>
                <finalName></finalName>
                <filters></filters>
                <pluginManagement>
                    <plugins>
                        <!-- 參見build/pluginManagement/plugins/plugin元素 -->
                        <plugin>
                            <groupId></groupId>
                            <artifactId></artifactId>
                            <version></version>
                            <extensions></extensions>
                            <executions>
                                <execution>
                                    <id></id>
                                    <phase></phase>
                                    <goals></goals>
                                    <inherited></inherited>
                                    <configuration></configuration>
                                </execution>
                            </executions>
                            <dependencies>
                                <!-- 參見dependencies/dependency元素 -->
                                <dependency>
                                    ......
                                </dependency>
                            </dependencies>
                            <goals></goals>
                            <inherited></inherited>
                            <configuration></configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <!-- 參見build/pluginManagement/plugins/plugin元素 -->
                    <plugin>
                        <groupId></groupId>
                        <artifactId></artifactId>
                        <version></version>
                        <extensions></extensions>
                        <executions>
                            <execution>
                                <id></id>
                                <phase></phase>
                                <goals></goals>
                                <inherited></inherited>
                                <configuration></configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <!-- 參見dependencies/dependency元素 -->
                            <dependency>
                                ......
                            </dependency>
                        </dependencies>
                        <goals></goals>
                        <inherited></inherited>
                        <configuration></configuration>
                    </plugin>
                </plugins>
            </build>
            <modules></modules><!-- 模塊(有時稱做子項目) 被構建成項目的一部分 . 列出的每一個模塊元素是指向該模塊的目錄的相對路徑 -->

            <!-- 發現依賴和擴展的遠程倉庫列表 .  -->
            <repositories>
                <!-- 參見repositories/repository元素 -->
                <repository>
                    <releases>
                        <enabled></enabled>
                        <updatePolicy></updatePolicy>
                        <checksumPolicy></checksumPolicy>
                    </releases>
                    <snapshots>
                        <enabled></enabled>
                        <updatePolicy></updatePolicy>
                        <checksumPolicy></checksumPolicy>
                    </snapshots>
                    <id></id>
                    <name></name>
                    <url></url>
                    <layout></layout>
                </repository>
            </repositories>

            <!-- 發現插件的遠程倉庫列表 , 這些插件用於構建和報表 -->
            <pluginRepositories>
                <!-- 包含須要鏈接到遠程插件倉庫的信息.參見repositories/repository元素 -->
                <pluginRepository>
                    <releases>
                        <enabled></enabled>
                        <updatePolicy></updatePolicy>
                        <checksumPolicy></checksumPolicy>
                    </releases>
                    <snapshots>
                        <enabled></enabled>
                        <updatePolicy></updatePolicy>
                        <checksumPolicy></checksumPolicy>
                    </snapshots>
                    <id></id>
                    <name></name>
                    <url></url>
                    <layout></layout>
                </pluginRepository>
            </pluginRepositories>

            <!-- 該元素描述了項目相關的全部依賴 .  這些依賴組成了項目構建過程當中的一個個環節 . 它們自動從項目定義的倉庫中下載 . 要獲取更多信息 , 請看項目依賴機制 .  -->
            <dependencies>
                <!-- 參見dependencies/dependency元素 -->
                <dependency>
                    ......
                </dependency>
            </dependencies>
            <reports></reports><!-- 不同意使用. 如今Maven忽略該元素. -->

            <!-- 該元素包括使用報表插件產生報表的規範 . 當用戶執行「mvn site」 , 這些報表就會運行 .  在頁面導航欄能看到全部報表的連接 . 參見reporting元素 -->
            <reporting>
                ......
            </reporting>

            <!-- 參見dependencyManagement元素 -->
            <dependencyManagement>
                <dependencies>
                    <!-- 參見dependencies/dependency元素 -->
                    <dependency>
                        ......
                    </dependency>
                </dependencies>
            </dependencyManagement>
            <!-- 參見distributionManagement元素 -->
            <distributionManagement>
                ......
            </distributionManagement>
            <!-- 參見properties元素 -->
            <properties/>
        </profile>
    </profiles>

    <!-- 模塊(有時稱做子項目) 被構建成項目的一部分 . 列出的每一個模塊元素是指向該模塊的目錄的相對路徑 -->
    <modules></modules>
    <!-- 發現依賴和擴展的遠程倉庫列表 .  -->
    <repositories>
        <!-- 包含須要鏈接到遠程倉庫的信息 -->
        <repository>
            <!-- 如何處理遠程倉庫裏發佈版本的下載 -->
            <releases>
                <enabled></enabled><!-- true或者false表示該倉庫是否爲下載某種類型構件(發佈版 , 快照版)開啓 .   -->
                <updatePolicy></updatePolicy><!-- 該元素指定更新發生的頻率 . Maven會比較本地POM和遠程POM的時間戳 . 這裏的選項是:always(一直) , daily(默認 , 每日) , interval:X(這裏X是以分鐘爲單位的時間間隔) , 或者never(從不) .  -->
                <checksumPolicy></checksumPolicy><!-- 當Maven驗證構件校驗文件失敗時該怎麼作:ignore(忽略) , fail(失敗) , 或者warn(警告) .  -->
            </releases>
            <!--  如何處理遠程倉庫裏快照版本的下載 . 有了releases和snapshots這兩組配置 , POM就能夠在每一個單獨的倉庫中 , 爲每種類型的構件採起不一樣的 策略 . 例如 , 可能有人會決定只爲開發目的開啓對快照版本下載的支持 . 參見repositories/repository/releases元素  -->
            <snapshots>
                <enabled></enabled>
                <updatePolicy></updatePolicy>
                <checksumPolicy></checksumPolicy>
            </snapshots>
            <id>banseon-repository-proxy</id><!-- 遠程倉庫惟一標識符 . 能夠用來匹配在settings.xml文件裏配置的遠程倉庫 -->
            <name>banseon-repository-proxy</name><!-- 遠程倉庫名稱 -->
            <url>http://127.0.0.1:8888/repository/</url><!-- 遠程倉庫URL , 按protocol://hostname/path形式 -->
            <layout>default</layout><!--  用於定位和排序構件的倉庫佈局類型-能夠是default(默認)或者legacy(遺留) . Maven 2爲其倉庫提供了一個默認的佈局;然 而 , Maven 1.x有一種不一樣的佈局 . 咱們可使用該元素指定佈局是default(默認)仍是legacy(遺留) .  -->
        </repository>
    </repositories>

    <!-- 發現插件的遠程倉庫列表 , 這些插件用於構建和報表 -->
    <pluginRepositories>
        <!-- 包含須要鏈接到遠程插件倉庫的信息.參見repositories/repository元素 -->
        <pluginRepository>
            ......
        </pluginRepository>
    </pluginRepositories>

    <!-- 該元素描述了項目相關的全部依賴 .  這些依賴組成了項目構建過程當中的一個個環節 . 它們自動從項目定義的倉庫中下載 . 要獲取更多信息 , 請看項目依賴機制 .  -->
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId><!-- 依賴的group ID -->
            <artifactId>maven-artifact</artifactId><!-- 依賴的artifact ID -->
            <version>3.8.1</version><!-- 依賴的版本號 .  在Maven 2裏, 也能夠配置成版本號的範圍 .  -->
            <type>jar</type><!--  依賴類型 , 默認類型是jar . 它一般表示依賴的文件的擴展名 , 但也有例外 . 一個類型能夠被映射成另一個擴展名或分類器 . 類型常常和使用的打包方式對應 ,  儘管這也有例外 . 一些類型的例子:jar , war , ejb-client和test-jar . 若是設置extensions爲 true , 就能夠在 plugin裏定義新的類型 . 因此前面的類型的例子不完整 .  -->
            <classifier></classifier><!--  依賴的分類器 . 分類器能夠區分屬於同一個POM , 但不一樣構建方式的構件 . 分類器名被附加到文件名的版本號後面 . 例如 , 若是你想要構建兩個單獨的構件成 JAR , 一個使用Java 1.4編譯器 , 另外一個使用Java 6編譯器 , 你就可使用分類器來生成兩個單獨的JAR構件 .  -->
            <scope>test</scope><!-- 依賴範圍 . 在項目發佈過程當中 , 幫助決定哪些構件被包括進來 . 欲知詳情請參考依賴機制 .
                  - compile :默認範圍 , 用於編譯
                  - provided:相似於編譯 , 但支持你期待jdk或者容器提供 , 相似於classpath
                  - runtime: 在執行時須要使用
                  - test:    用於test任務時使用
                  - system: 須要外在提供相應的元素 . 經過systemPath來取得
                  - systemPath: 僅用於範圍爲system . 提供相應的路徑
                  - optional:   當項目自身被依賴時 , 標註依賴是否傳遞 . 用於連續依賴時使用 -->

            <systemPath></systemPath><!-- 僅供system範圍使用 . 注意 , 不鼓勵使用這個元素 , 而且在新的版本中該元素可能被覆蓋掉 . 該元素爲依賴規定了文件系統上的路徑 . 須要絕對路徑而不是相對路徑 . 推薦使用屬性匹配絕對路徑 , 例如${java.home} .  -->
            <!-- 當計算傳遞依賴時 ,  從依賴構件列表裏 , 列出被排除的依賴構件集 . 即告訴maven你只依賴指定的項目 , 不依賴項目的依賴 . 此元素主要用於解決版本衝突問題 -->
            <exclusions>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>

            <optional>true</optional><!-- 可選依賴 , 若是你在項目B中把C依賴聲明爲可選 , 你就須要在依賴於B的項目(例如項目A)中顯式的引用對C的依賴 . 可選依賴阻斷依賴的傳遞性 .  -->
        </dependency>
    </dependencies>

    <reports></reports><!-- 不同意使用. 如今Maven忽略該元素. -->

    <!-- 該元素描述使用報表插件產生報表的規範 . 當用戶執行「mvn site」 , 這些報表就會運行 .  在頁面導航欄能看到全部報表的連接 .  -->
    <reporting>
        <excludeDefaults></excludeDefaults><!-- true , 則 , 網站不包括默認的報表 . 這包括「項目信息」菜單中的報表 .  -->
        <outputDirectory></outputDirectory><!-- 全部產生的報表存放到哪裏 . 默認值是${project.build.directory}/site .  -->

        <!-- 使用的報表插件和他們的配置 .  -->
        <plugins>
            <!-- plugin元素包含描述報表插件須要的信息 -->
            <plugin>
                <groupId></groupId><!-- 報表插件在倉庫裏的group ID -->
                <artifactId></artifactId><!-- 報表插件在倉庫裏的artifact ID -->
                <version></version><!-- 被使用的報表插件的版本(或版本範圍) -->
                <inherited></inherited><!-- 任何配置是否被傳播到子項目 -->
                <configuration></configuration><!-- 報表插件的配置 -->

                <!-- 一組報表的多重規範 , 每一個規範可能有不一樣的配置 . 一個規範(報表集)對應一個執行目標  . 例如 , 有1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9個報表 . 1 , 2 , 5構成A報表集 , 對應一個執行目標 . 2 , 5 , 8構成B報表集 , 對應另外一個執行目標 -->
                <reportSets>
                    <!-- 表示報表的一個集合 , 以及產生該集合的配置 -->
                    <reportSet>
                        <id></id><!-- 報表集合的惟一標識符 , POM繼承時用到 -->
                        <configuration></configuration><!-- 產生報表集合時 , 被使用的報表的配置 -->
                        <inherited></inherited><!-- 配置是否被繼承到子POMs -->
                        <reports></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>
            <uniqueVersion></uniqueVersion><!-- 是分配給快照一個惟一的版本號(由時間戳和構建流水號)?仍是每次都使用相同的版本號?參見repositories/repository元素 -->
            <id>banseon-maven2</id>
            <name>banseon maven2</name>
            <url>file://${basedir}/target/deploy</url>
            <layout></layout>
        </repository>
        <!-- 構件的快照部署到哪裏?若是沒有配置該元素 , 默認部署到repository元素配置的倉庫 , 參見distributionManagement/repository元素 -->
        <snapshotRepository>
            <uniqueVersion></uniqueVersion>
            <id>banseon-maven2</id>
            <name>Banseon-maven2 Snapshot Repository</name>
            <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url>
            <layout></layout>
        </snapshotRepository>

        <!-- 部署項目的網站須要的信息 -->
        <site>
            <id>banseon-site</id><!-- 部署位置的惟一標識符 , 用來匹配站點和settings.xml文件裏的配置 -->
            <name>business api website</name><!-- 部署位置的名稱 -->
            <url>scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web</url><!-- 部署位置的URL , 按protocol://hostname/path形式 -->
        </site>
        <downloadUrl></downloadUrl><!-- 項目下載頁面的URL . 若是沒有該元素 , 用戶應該參考主頁 . 使用該元素的緣由是:幫助定位那些不在倉庫裏的構件(因爲license限制) .  -->

        <!-- 若是構件有了新的group ID和artifact ID(構件移到了新的位置) , 這裏列出構件的重定位信息 .  -->
        <relocation>
            <groupId></groupId><!-- 構件新的group ID -->
            <artifactId></artifactId><!-- 構件新的artifact ID -->
            <version></version><!-- 構件新的版本號 -->
            <message></message><!-- 顯示給用戶的 , 關於移動的額外信息 , 例如緣由 .  -->
        </relocation>
        <status></status><!--  給出該構件在遠程倉庫的狀態 . 不得在本地項目中設置該元素 , 由於這是工具自動更新的 . 有效的值有:none(默認) , converted(倉庫管理員從 Maven 1 POM轉換過來) , partner(直接從夥伴Maven 2倉庫同步過來) , deployed(從Maven 2實例部 署) , verified(被覈實時正確的和最終的) .  -->
    </distributionManagement>

    <!-- 以值替代名稱 , Properties能夠在整個POM中使用 , 也能夠做爲觸發條件(見settings.xml配置文件裏activation元素的說明) . 格式是<name>value</name> .  -->
    <properties>
        <version1>1.0</version1>
        <version2>2.0</version2>
    </properties>
</project>
---------------------
做者:BlueKitty1210
來源:CSDN
原文:https://blog.csdn.net/xingbaozhen1210/article/details/81867358
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
相關文章
相關標籤/搜索