Maven入門-3.pom文件和settings文件

一、pom.xml文件介紹

Maven項目的核心是pom.xml,pom(Project Object Model項目對象模型
pom.xml文件定義了項目的基本信息,項目構建,項目依賴等。html

 
 
 
 
 
<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/maven-v4_0_0.xsd "> <modelVersion>4.0.0</modelVersion> <groupId>com.fz.shiro</groupId> <artifactId>ShiroTest</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>ShiroTest Maven Webapp</name></project>

porject:是全部元素的根元素
如下元素(groupId,artifactId,packaging,version)是maven的座標,他們惟一標識了一個項目
modelVersion:指定了當前模型的版本,對於Maven2和Maven3來講,它只能說4.0.0
groupId:定義了項目屬於哪一個組,假如你在github上創建一個demo項目,那groupId應該com.github.demo。若是你的公司是百度,有個helloword的項目。那groupId應該爲com.baidu.helloword若是你的helloword項目有不少模塊,則按模塊化分。com.baidu.helloword.模塊名稱
artifactId:定義了當前maven項目在組中的惟一ID,假如你的項目爲myapp,groupId爲com.baid.myapp。那你的artifactId能夠按模塊劃分。例如當前編寫的是myapp項目中的工具類,則artifactId能夠爲myapp-utils
packaging:表示打包後項目的類型(默認是jar),web項目爲war
version:指定了當前項目的版本,SNAPSHOT意爲快照,表示正在開發中,不是穩定版本。
name:聲明瞭一個對於用戶更爲友好的項目名稱java

圖片來自於: 史上最全的maven的pom.xml文件詳解
git

二、settings.xml文件介紹

包含了本地倉庫位置,遠程倉庫服務器以及認證信息等。
settings.xml存在於兩個地方:github

  1. 安裝的地方:$M2_HOME/conf/settings.xml
  2. 用戶的目錄:${user.home}/.m2/settings.xml

前者又被叫作全局配置,後者被稱爲用戶配置。若是二者都存在,它們的內容將被合併,而且用戶範圍的settings.xml優先。web

 
 
 
 
 
<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!--指定本地倉庫存儲路徑。默認值爲~/.m2/repository 即 ${user.home}/.m2/repository。 --> <localRepository>d:/.m2/repository</localRepository> <!--指定Maven是否須要和用戶輸入進行交互。true:須要與用戶交互;false:使用一個合理的默認值。默認值爲true。 --> <interactiveMode>true</interactiveMode> <!--指定是否使用plugin-registry.xml文件來管理插件版本。設爲true表示使用。默認值爲false。 --> <usePluginRegistry>false</usePluginRegistry> <!--指定是否在離線模式下運行。設爲true表示項目構建要在離線模式下運行,默認值爲false。 --> <offline>false</offline> <!-- 指定插件groupId列表,用於搜索時插件的groupId沒有明確規定。 --> <pluginGroups> <!-- 指定使用插件查找進一步的組標識符 --> <pluginGroup>com.micmiu.plugins</pluginGroup> </pluginGroups> <!-- 指定這臺機器鏈接到網絡的代理服務器的列表。除非另有規定(系統屬性或命令行開關), 列表中配置的第一代理將被激活使用。 --> <proxies> <!-- 配置代理服務器的相關參數 --> <proxy> <!-- 代理標識ID,默認值:default --> <id>micmiuProxy</id> <!-- 指定是否激活,默認值:true --> <active>true</active> <!-- 指定代理協議,默認值:http --> <protocol>http</protocol> <!-- 指定代理認證的用戶名 --> <username>micmiu</username> <!-- 指定代理認證用戶的密碼 --> <password>mypwd</password> <!-- 指定代理服務器的主機名 --> <host>micmiu.com</host> <!-- 指定代理服務的端口 默認值:8080 --> <port>80</port> <!-- 指定不被代理的主機名列表。多個用|分隔。 --> <nonProxyHosts>ctosun.com|ctosun.micmiu.com</nonProxyHosts> </proxy> </proxies> <!-- 這是一個認證配置的列表,系統內部根據配置的serverID使用。認證配置用於maven連接到遠程服務 --> <servers> <!-- 指定的身份認證信息用於鏈接到一個特定的服務器時,肯定系統內的惟一的名稱(簡稱下面的'id'屬性)。 --> <server> <!-- 這是server的id(注意不是用戶登錄的id)。該id與distributionManagement中repository元素的id必需要匹配。 --> <id>micmiu-releases</id> <!-- 服務器認證的用戶名 --> <username>michael</username> <!-- 服務器認證的用戶對應的密碼 --> <password>mypwd</password> </server> <!-- 另外一個示例 私鑰/密碼 --> <server> <id>micmiu-snapshots</id> <!-- 認證時使用的私鑰文件。 --> <privateKey>/home/micmiu/.ssh/id_dsa</privateKey> <!-- 認證時使用的私鑰密碼,沒有密碼就設爲空 --> <passphrase>mypwd</passphrase> <!-- 目錄被建立時的權限設置。其值對應了unix文件系統的權限,如664,或者775 --> <directoryPermissions>775</directoryPermissions> <!-- 倉庫文件建立時的權限設置。其值對應了unix文件系統的權限,如664,或者775。 --> <filePermissions>664</filePermissions> </server> </servers> <!-- 指定鏡像列表,用於從遠程倉庫下載資源 --> <mirrors> <!-- 指定倉庫的鏡像站點,代替一個給定的庫。該鏡像藏庫有一個ID相匹配的mirrorOf元素。 ID是用於繼承和直接查找目的,必須是惟一的。 --> <mirror> <!--該鏡像的惟一標識符。id用來區分不一樣的mirror元素。 --> <id>mirrorId</id> <!--被鏡像的服務器的id,好比:central,不能和id匹配。 --> <mirrorOf>central</mirrorOf> <name>micmiu for dev.</name> <url>http://dev.micmiu.com/repo/maven2</url> </mirror> </mirrors> <!-- 這是一個能夠在各類不一樣的方式激活的配置文件列表,並能夠修改構建過程。在settings.xml中提供的信息, 旨在提供本地機器容許創建在本地環境中工做的具體路徑和庫位置。有多種方式能夠激活配置屬性:一種在settings.xml中<activeProfiles>指定; 另外一種實質上依賴於系統屬性,不管是匹配特定的屬性值或只是測試到它的存在.配置文件也能夠根據JDK版本的前綴進行激活,1.4 能夠激活1.4.2_07 注:對於在settings.xml中定義的配置,你僅限於指定資源倉庫、插件倉庫和用於插件在POM中變量的自由形式屬性的定義 --> <profiles> <!-- 指定生成過程的介紹,使用一個或多個上述機制被激活。對於繼承而言,激活經過<activatedProfiles/>或命令行配置文件, 配置文件必須有一個惟一的ID。此配置文件的例子使用的JDK版本觸發激活。 --> <profile> <!--該配置的惟一標識符。 --> <id>jdk-1.4</id> <!--自動觸發配置文件的邏輯定義。Activation的邏輯配置決定了是否開啓該profile。activation元素並非激活profile的惟一方式。 settings.xml文件中的activeProfile元素可指定須要激活的profile的id。 profile也能夠經過在命令行,使用-P標記和逗號分隔的列表來顯式的激活 --> <activation> <!--指定是否激活的標識 默認值爲false --> <activeByDefault>false</activeByDefault> <!--當匹配的jdk被檢測到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活全部不是以1.4開頭的JDK版本。 --> <jdk>1.4</jdk> <!-- 當檢測到匹配的操做系統屬性時,指定該配置文件將被激活, --> <os> <!--激活profile的操做系統的名字 --> <name>windows 7</name> <!--激活profile的操做系統所屬家族(如 'windows') --> <family>windows</family> <!--激活profile的操做系統體系結構 --> <arch>x86</arch> <!--激活profile的操做系統版本 --> <version>6.1</version> </os> <!-- 檢測系統對應的屬性和值(該值可在POM中經過${屬性名稱}引用),配置就會被激活。 若是值字段是空的,那麼存在屬性名稱字段就會激活 --> <property> <!-- 屬性的名稱 --> <name>mavenVersion</name> <!-- 屬性的值 --> <value>3.0.4</value> </property> <!-- 經過檢測該文件的是否存在來激活配置。missing檢查文件是否存在,若是不存在則激活profile;exists則會檢查文件是否存在,若是存在則激活。 --> <file> <!--若是指定的文件存在,則激活profile。 --> <exists>/usr/local/micmiu/workspace/myfile</exists> <!--若是指定的文件不存在,則激活profile。 --> <missing>/usr/local/micmiu/workspace/myfile</missing> </file> </activation> <!-- 對應profile的擴展屬性列表。Maven屬性和Ant中的屬性同樣,能夠用來存放一些值。這些值能夠在POM中的任何地方使用標記${X}來使用, 這裏X是指屬性的名稱。屬性有五種不一樣的形式,而且都能在settings.xml文件中訪問。 1\. env.X: 表示系統環境變量。例如,"env.PATH" 等同於 $path環境變量(在Windows上是%PATH%)。 2\. project.x:表示 POM中對應的屬性值。 3\. settings.x: 表示 settings.xml中對應屬性值。 4\. Java系統屬性: 全部可經過java.lang.System.getProperties()訪問的屬性都能在POM中使用該形式訪問。 5\. x: 在<properties/>元素中,或者外部文件中設置,以${someVar}的形式使用。 --> <properties> <user.blog>www.micmiu.com</user.blog> </properties> </profile> <!-- 這是另外一個配置文件,根據系統屬性來激活 --> <profile> <!--該配置的惟一標識符。 --> <id>env-dev</id> <activation> <property> <!-- 被用來激活配置文件的屬性的名稱 --> <name>target-env</name> <!-- 被用來激活配置文件的屬性的值 --> <value>dev</value> </property> </activation> <!-- 指定配置文件的擴展配置 內容採起property.value的形式 --> <properties> <tomcatPath>/path/to/tomcat/instance</tomcatPath> </properties> </profile> <profile> <id>repo-dev</id> <!-- 配置遠程倉庫列表 --> <repositories> <!-- 遠程倉庫的配置信息 --> <repository> <!-- 遠程倉庫惟一標識 --> <id>nexus</id> <!-- 遠程倉庫名稱 --> <name>nexus for develop</name> <!-- 遠程倉庫URL --> <url>http://192.168.1.8:8080/nexus/content/groups/public/</url> <layout>default</layout> <releases> <!--是否使用這個資源庫下載這種類型的構件 默認值:true --> <enabled>true</enabled> <!--指定下載更新的頻率。這裏的選項是:always(一直),daily(每日,默認值),interval:X(這裏X是指分鐘),或者never(從不)。 --> <updatePolicy>daily</updatePolicy> <!--當Maven驗證構件校驗文件失敗時該怎麼作fail(失敗)或者warn(告警)。 --> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <!--是否使用這個資源庫下載這種類型的構件 默認值:true --> <enabled>true</enabled> <!--指定下載更新的頻率。這裏的選項是:always(一直),daily(每日,默認值),interval:X(這裏X是指分鐘),或者never(從不)。 --> <updatePolicy>daily</updatePolicy> <!--當Maven驗證構件校驗文件失敗時該怎麼作fail(失敗)或者warn(告警)。 --> <checksumPolicy>warn</checksumPolicy> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>local nexus</name> <url>http://192.168.1.8:8080/nexus/content/groups/public</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <!-- 指定被激活的配置文件 --> <activeProfiles> <activeProfile>repo-dev</activeProfile> </activeProfiles></settings>
相關文章
相關標籤/搜索