1. 程式人生 > >Maven中的pom.xml配置檔案詳解

Maven中的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包:

[html] view plain copy  print?
  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>

構建配置

[html] view plain copy  print?
  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配置檔案

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

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

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

    Mavenpom.xml配置檔案

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

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

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

    轉:ssm spring+springmvc+mybatisxml配置檔案

    這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先   這篇文章暫時只對框架中所要用到的配

    maven的settings.xml配置檔案

    一、Settings.xml基本資訊 Settings.xml是maven全域性引數的配置檔案,其中包含本地倉儲位置、遠端倉儲伺服器、認證資訊等等。 settings.xml檔案一般存在於兩個位置: 全域性配置(global settings): maven安裝目錄/conf/settings

    struts2struts.xml配置檔案

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://st

    Maven之setting.xml配置檔案

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

    maven安裝和eclipse整合以及Maven之setting.xml配置檔案

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

    struts2入門 struts2struts.xml配置檔案

    一、struts2的功能 Struts2是一個優秀的MVC框架,大大降低了各個層之間的耦合度,具有很好的擴充套件性。 傳統的servlet + jsp實現了MVC架構,其執行機制是:jsp頁面(檢視view)傳送訊息到servlet(控制器Controller),servlet獲取請求資料,處理業務邏輯,

    Maven專案setting.xml配置檔案

    Maven專案的setting.xml檔案,主要分為兩個: 使用者的安裝: ${user.home}/.m2/settings.xml 當前使用者範圍的配置檔案; Maven安裝: maven.conf/settings.xml全局範圍配置文件

    ssm spring+springmvc+mybatisxml配置檔案

    這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先   這篇文章暫時只對框架中所要用到的

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

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

    Mavenpom.xml與setting.xml配置檔案

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

    struts2的web.xml配置檔案

      web.xml 在Web應用程式描述符檔案表示Java Web應用程式的核心,它也是Struts框架的核心的一部分。在web.xml檔案中,Struts的定義其FilterDispatcher,在Servlet過濾器類初始化Struts框架和處理所有的請求。

    Android 開發的 Manifest.xml 配置檔案

        AndroidManifest.xml 是一個非常重要的功能清單檔案。每一個應用程式的根目錄裡都有這個功能清單檔案,這個清單檔案給Android系統提供了關於這個應用程式的基本資訊,系統在執行任何程式程式碼之前必須知道這些資訊。 <?xml version=

    MAVENmaven系列--pom.xml標簽

    als lex script 是否 mod resource ica 資源 bugzilla pom文件作為MAVEN中重要的配置文件,對於它的配置是相當重要。文件中包含了開發者需遵循的規則、缺陷管理系統、組織、licenses、項目信息、項目依賴性等。下面將重點介紹一下該

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

    【MyBatis Generator】程式碼自動生成工具 generatorConfig.xml配置檔案

    MyBatis Generator官網地址:http://www.mybatis.org/generator/index.html MyBaris Generator中文地址:http://mbg.cndocs.ml/ 在MBG中,最主要也最重要的,就是generatorConfig.xml

    mavenpom.xml配置JDK8編譯、執行環境

    我們在開發maven專案時,IDE經常給我們把jdk執行環境弄個JavaSE5 ,煩。。 這個可以在專案build path中手動編輯修改,當然也可以在pom.xml中直接指定,將編譯執行環境統統改為JDK1.8 。 pom.xml  中配置一個maven編譯外掛&n