1. 程式人生 > >Maven之(七)pom.xml配置檔案詳解

Maven之(七)pom.xml配置檔案詳解

setting.xml主要用於配置maven的執行環境等一系列通用的屬性,是全域性級別的配置檔案;而pom.xml主要描述了專案的maven座標,依賴關係,開發者需要遵循的規則,缺陷管理系統,組織和licenses,以及其他所有的專案相關因素,是專案級別的配置檔案。

基礎配置

一個典型的pom.xml檔案配置如下:

  1. <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"
    >
  3.     <!-- 模型版本。maven2.0必須是這樣寫,現在是maven2唯一支援的版本 -->
  4.     <modelVersion>4.0.0</modelVersion>
  5.     <!-- 公司或者組織的唯一標誌,並且配置時生成的路徑也是由此生成, 如com.winner.trade,maven會將該專案打成的jar包放本地路徑:/com/winner/trade -->
  6.     <groupId>com.winner.trade</groupId>
  7.     <!-- 本專案的唯一ID,一個groupId下面可能多個專案,就是靠artifactId來區分的 -->
  8.     <artifactId>trade-core</artifactId>
  9.     <!-- 本專案目前所處的版本號 -->
  10.     <version>1.0.0-SNAPSHOT</version>
  11.     <!-- 打包的機制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,預設為jar -->
  12.     <packaging>jar</packaging>
  13.     <!-- 幫助定義構件輸出的一些附屬構件,附屬構件與主構件對應,有時候需要加上classifier才能唯一的確定該構件 不能直接定義專案的classifer,因為附屬構件不是專案直接預設生成的,而是由附加的外掛幫助生成的 -->
  14.     <classifier>...</classifier>
  15.     <!-- 定義本專案的依賴關係 -->
  16.     <dependencies>
  17.         <!-- 每個dependency都對應這一個jar包 -->
  18.         <dependency>
  19.             <!--一般情況下,maven是通過groupId、artifactId、version這三個元素值(俗稱座標)來檢索該構件, 然後引入你的工程。如果別人想引用你現在開發的這個專案(前提是已開發完畢併發布到了遠端倉庫),-->
  20.             <!--就需要在他的pom檔案中新建一個dependency節點,將本專案的groupId、artifactId、version寫入, maven就會把你上傳的jar包下載到他的本地 -->
  21.             <groupId>com.winner.trade</groupId>
  22.             <artifactId>trade-test</artifactId>
  23.             <version>1.0.0-SNAPSHOT</version>
  24.             <!-- maven認為,程式對外部的依賴會隨著程式的所處階段和應用場景而變化,所以maven中的依賴關係有作用域(scope)的限制。 -->
  25.             <!--scope包含如下的取值:compile(編譯範圍)、provided(已提供範圍)、runtime(執行時範圍)、test(測試範圍)、system(系統範圍) -->
  26.             <scope>test</scope>
  27.             <!-- 設定指依賴是否可選,預設為false,即子專案預設都繼承:為true,則子專案必需顯示的引入,與dependencyManagement裡定義的依賴類似  -->
  28.             <optional>false</optional>
  29.             <!-- 遮蔽依賴關係。 比如專案中使用的libA依賴某個庫的1.0版,libB依賴某個庫的2.0版,現在想統一使用2.0版,就應該遮蔽掉對1.0版的依賴 -->
  30.             <exclusions>
  31.                 <exclusion>
  32.                     <groupId>org.slf4j</groupId>
  33.                     <artifactId>slf4j-api</artifactId>
  34.                 </exclusion>
  35.             </exclusions>
  36.         </dependency>
  37.     </dependencies>
  38.     <!-- 為pom定義一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->
  39.     <properties>
  40.         <file.encoding>UTF-8</file.encoding>
  41.         <java.source.version>1.5</java.source.version>
  42.         <java.target.version>1.5</java.target.version>
  43.     </properties>
  44.     ...  
  45. </project>

一般來說,上面的幾個配置項對任何專案都是必不可少的,定義了專案的基本屬性。

這裡有必要對一個不太常用的屬性classifier做一下解釋,因為有時候引用某個jar包,classifier不寫的話會報錯。

classifier元素用來幫助定義構件輸出的一些附屬構件。附屬構件與主構件對應,比如主構件是 kimi-app-2.0.0.jar,該專案可能還會通過使用一些外掛生成 如kimi-app-2.0.0-javadoc.jar (Java文件)、 kimi-app-2.0.0-sources.jar(Java原始碼) 這樣兩個附屬構件。這時候,javadoc、sources就是這兩個附屬構件的classifier,這樣附屬構件也就擁有了自己唯一的座標。

classifier的用途在於:

1. maven download  javadoc / sources jar包的時候,需要藉助classifier指明要下載那個附屬構件

2. 引入依賴的時候,有時候僅憑groupId、artifactId、version無法唯一的確定某個構件,需要藉助classifier來進一步明確目標。比如JSON-lib,有時候會同一個版本會提供多個jar包,在JDK1.5環境下是一套,在JDK1.3環境下是一套:


引用它的時候就要註明JDK版本,否則maven不知道你到底需要哪一套jar包:

  1. <dependency>
  2.            <groupId>net.sf.json-lib</groupId>
  3.            <artifactId>json-lib</artifactId>
  4.             <version>2.4</version>
  5.            <classifier>jdk15</classifier>
  6. </dependency>

構建配置

  1. <build>
  2.     <!-- 產生的構件的檔名,預設值是${artifactId}-${version}。 -->
  3.     <finalName>myPorjectName</finalName>
  4.     <!-- 構建產生的所有檔案存放的目錄,預設為${basedir}/target,即專案根目錄下的target -->
  5.     <directory>${basedir}/target</directory>
  6.     <!--當專案沒有規定目標(Maven2叫做階段(phase))時的預設值, -->
  7.     <!--必須跟命令列上的引數相同例如jar:jar,或者與某個階段(phase)相同例如install、compile等 -->
  8.     <defaultGoal>install</defaultGoal>
  9.     <!--當filtering開關開啟時,使用到的過濾器屬性檔案列表。 -->
  10. 相關推薦

    Mavenpom.xml配置檔案

    setting.xml主要用於配置maven的執行環境等一系列通用的屬性,是全域性級別的配置檔案;而pom.xml主要描述了專案的maven座標,依賴關係,開發者需要遵循的規則,缺陷管理系統,組織和licenses,以及其他所有的專案相關因素,是專案級別的配置檔案。

    Maven使用者手冊】Mavenpom.xml配置檔案

    歡迎關注公眾號: ----------------------------------------------正文---------------------------------------------------- setting.xml主要用於配置m

    Mavenpom.xml配置檔案

    轉自: Maven的pom.xml配置檔案詳解  <!--父專案的座標。如果專案中沒有規定某個元素的值,那麼父專案中的對應值即為專案的預設值。 座標包括group ID,artifact ID和 version。-->  &

    Java程式設計師從笨鳥到菜鳥五十三細談HibernateHibernate常用配置檔案

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    Maven中的pom.xml配置檔案

    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation=

    企業級 SpringBoot 教程 Spring Boot配置檔案

    springboot採納了建立生產就緒Spring應用程式的觀點。 Spring Boot優先於配置的慣例,旨在讓您儘快啟動和執行。在一般情況下,我們不需要做太多的配置就能夠讓spring boot正常執行。在一些特殊的情況下,我們需要做修改一些配置,或者需要有自己的配置屬性

    對於maven建立spark專案的pom.xml配置檔案圖文

      不多說,直接上乾貨! http://mvnrepository.com/   這裡,怎麼建立,見   這裡, 我重點說下spark專案,因為,對於hadoop這樣的,我已經寫了大量部落格了。    比如,我目前用得較多的spark-m

    Mavenpom.xml與setting.xml配置檔案

    一.pom.xml詳解     1.概述     pom中節點如下分佈 <project xmlns="http://maven.apache.org/

    maven總結-- pom.xml檔案maven中的關係,私服

    一. pom.xml檔案 1.1 簡介   pom:project object model 專案物件模型  pom.xml是Maven的核心配置檔案  一個Maven專案有且只有一個pom.xml檔案,該檔案必須在專案的根目錄下 1.2 座標 1.2.1 什麼是座標  (1)用來唯一的標識每個標識,

    Maven約定優於配置

    maven的配置檔案看似很複雜,其實只需要根據專案的實際背景,設定個別的幾個配置項而已。maven有自己的一套預設配置,使用者除非必要,並不需要去修改那些約定內容。這就是所謂的“約定優於配置”。 檔案目錄maven預設的檔案存放結構如下:每一個階段的任務都知道怎麼正確完成自己

    mybatis原始碼學習執行過程分析2——config.xml配置檔案和mapper.xml對映檔案解析過程

    在上一篇中跟蹤了SqlSessionFactory及SqlSession的建立過程。這一篇,主要跟蹤Mapper介面和XML檔案對映及獲取。 1.xml檔案的解析 1.1Mybatis-config.xml的解析 在SqlSessionFactor

    Mavensetting.xml配置檔案

    setting.xml配置檔案 maven的配置檔案settings.xml存在於兩個地方: 1.安裝的地方:${M2_HOME}/conf/settings.xml 2.使用者的目錄:${user.home}/.m2/settings.xml 前者又被叫做全域性配置,對作

    攜程 Apollo 配置中心 | 學習筆記 | 如何將配置檔案敏感資訊加密?

    以上為相關係列文章通過上述文章,相信我們的環境基本搭建完成!下面,我們將瞭解如何對存放在apollo配置中心的檔案進行脫敏處理。一、需求   當我們把我們專案中的所有配置資訊,都放入到apollo配置中心時,可能存在一些敏感配置資訊,不方便讓其他人檢視到。這時候我們就需要對我

    C# 基礎十三C# XML配置檔案、ini配置檔案的建立、讀寫:動態修改IP

    一、簡介 傳統的配置檔案ini已有被xml檔案逐步代替的趨勢,這裡主要討論XML配置檔案。 二、ini網址 https://www.cnblogs.com/cncc/p/3415694.html(重點) https://www.cnblogs.com/xmy-007/p/640022

    maven安裝和eclipse整合以及Mavensetting.xml配置檔案

    由於maven需要JDK的支援,所以在安裝maven之前請確保電腦上已經安裝了JDK,且配置好了環境變數,具體的JDK的安裝及配置可自行百度。下面進入安裝 一、maven安裝 前面已經下載了相應版本的maven,且已經配置好JDK的環境;     1

    Maven使用者手冊】Mavensetting.xml配置檔案

    setting.xml配置檔案 maven的配置檔案settings.xml存在於兩個地方: 1.安裝的地方:${M2_HOME}/conf/settings.xml 2.使用者的目錄:${user.home}/.m2/settings.xml 前者又被叫做全域性配置

    【Ibatis】、sqlMapConfig.xml配置檔案

    1.sqlMapConfig.xml配置檔案詳解: Xml程式碼   <? xml version="1.0" encoding="UTF-8" ?>  <! DOCTYPE sqlMapConfig   PUBLIC "-//iBATIS.com//DTD SQL Map Co

    Maven 管理SSM框架的pom.xml配置檔案

    三個框架所使用的版本: mybatis —- 3.2.5 spring —- 4.3.3.RELEASE spring mvc —- 4.3.3.RELEASE 其它: junit —- 4.8.1 MySQL —- 5.1.38 log4j —- 1.2.17 c3p0 

    log4j2的xml配置檔案 2

    <?xml version="1.0" encoding="UTF-8"?> 2<Configurationstatus="WARN"> 3<Appenders> 4<Consolename="Console"target="SYSTEM_OUT"> 5<

    【轉載】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.