什么是Maven?
如今我們構(gòu)建一個(gè)項(xiàng)目需要用到很多第三方的類(lèi)庫(kù),如寫(xiě)一個(gè)使用Spring的Web項(xiàng)目就需要引入大量的jar包。一個(gè)項(xiàng)目Jar包的數(shù)量之多往往讓我們瞠目結(jié)舌,并且Jar包之間的關(guān)系錯(cuò)綜復(fù)雜,一個(gè)Jar包往往又會(huì)引用其他Jar包,缺少任何一個(gè)Jar包都會(huì)導(dǎo)致項(xiàng)目編譯失敗。
以往開(kāi)發(fā)項(xiàng)目時(shí),程序員往往需要花較多的精力在引用Jar包搭建項(xiàng)目環(huán)境上,而這一項(xiàng)工作尤為艱難,少一個(gè)Jar包、多一個(gè)Jar包往往會(huì)報(bào)一些讓人摸不著頭腦的異常。
而Maven就是一款幫助程序員構(gòu)建項(xiàng)目的工具,我們只需要告訴Maven需要哪些Jar 包,它會(huì)幫助我們下載所有的Jar,極大提升開(kāi)發(fā)效率。
安裝Maven 和 Maven的Eclipse插件
http://blog.csdn.net/qjyong/article/details/9098213
Maven規(guī)定的目錄結(jié)構(gòu)
若要使用Maven,那么項(xiàng)目的目錄結(jié)構(gòu)必須符合Maven的規(guī)范,其目錄結(jié)構(gòu)如下:
Maven基本命令
-
-v:查詢Maven版本
本命令用于檢查maven是否安裝成功。
Maven安裝完成之后,在命令行輸入mvn -v,若出現(xiàn)maven信息,則說(shuō)明安裝成功。
-
compile:編譯
將java源文件編譯成class文件
-
test:測(cè)試項(xiàng)目
執(zhí)行test目錄下的測(cè)試用例
-
package:打包
將項(xiàng)目打成jar包
-
clean:刪除target文件夾
-
install:安裝
將當(dāng)前項(xiàng)目放到Maven的本地倉(cāng)庫(kù)中。供其他項(xiàng)目使用
什么是Maven倉(cāng)庫(kù)?
Maven倉(cāng)庫(kù)用來(lái)存放Maven管理的所有Jar包。分為:本地倉(cāng)庫(kù) 和 中央倉(cāng)庫(kù)。
- 本地倉(cāng)庫(kù):Maven本地的Jar包倉(cāng)庫(kù)。
- 中央倉(cāng)庫(kù): Maven官方提供的遠(yuǎn)程倉(cāng)庫(kù)。
當(dāng)項(xiàng)目編譯時(shí),Maven首先從本地倉(cāng)庫(kù)中尋找項(xiàng)目所需的Jar包,若本地倉(cāng)庫(kù)沒(méi)有,再到Maven的中央倉(cāng)庫(kù)下載所需Jar包。
什么是“坐標(biāo)”?
在Maven中,坐標(biāo)是Jar包的唯一標(biāo)識(shí),Maven通過(guò)坐標(biāo)在倉(cāng)庫(kù)中找到項(xiàng)目所需的Jar包。
如下代碼中,groupId和artifactId構(gòu)成了一個(gè)Jar包的坐標(biāo)。
<groupId>cn.missbe.web.search</groupId> <artifactId>resource-search</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version>
- groupId:所需Jar包的項(xiàng)目名
- artifactId:所需Jar包的模塊名
- version:所需Jar包的版本號(hào)
傳遞依賴 與 排除依賴
- 傳遞依賴:如果我們的項(xiàng)目引用了一個(gè)Jar包,而該Jar包又引用了其他Jar包,那么在默認(rèn)情況下項(xiàng)目編譯時(shí),Maven會(huì)把直接引用和簡(jiǎn)潔引用的Jar包都下載到本地。
- 排除依賴:如果我們只想下載直接引用的Jar包,那么需要在pom.xml中做如下配置:(將需要排除的Jar包的坐標(biāo)寫(xiě)在中)
<groupId>cn.missbe.web.search</groupId> <artifactId>resource-search</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version>
依賴范圍scope
在項(xiàng)目發(fā)布過(guò)程中,幫助決定哪些構(gòu)件被包括進(jìn)來(lái)。欲知詳情請(qǐng)參考依賴機(jī)制。
- compile :默認(rèn)范圍,用于編譯
- provided:類(lèi)似于編譯,但支持你期待jdk或者容器提供,類(lèi)似于classpath
- runtime: 在執(zhí)行時(shí)需要使用
- test: 用于test任務(wù)時(shí)使用
- system: 需要外在提供相應(yīng)的元素。通過(guò)systemPath來(lái)取得
- systemPath: 僅用于范圍為system。提供相應(yīng)的路徑
- optional: 當(dāng)項(xiàng)目自身被依賴時(shí),標(biāo)注依賴是否傳遞。用于連續(xù)依賴時(shí)使用
依賴沖突
若項(xiàng)目中多個(gè)Jar同時(shí)引用了相同的Jar時(shí),會(huì)產(chǎn)生依賴沖突,但Maven采用了兩種避免沖突的策略,因此在Maven中是不存在依賴沖突的。
本項(xiàng)目——>A.jar——>B.jar——>X.jar 本項(xiàng)目——>C.jar——>X.jar
-
本項(xiàng)目——>A.jar——>B.jar——>X.jar
-
本項(xiàng)目——>C.jar——>X.jar
若本項(xiàng)目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar。
在此時(shí),Maven只會(huì)引用引用路徑最短的Jar。
聚合
-
什么是聚合?
將多個(gè)項(xiàng)目同時(shí)運(yùn)行就稱為聚合。
-
如何實(shí)現(xiàn)聚合?
只需在pom中作如下配置即可實(shí)現(xiàn)聚合:
<module>web-connection-pool</module> <module>web-java-crawler</module>
繼承
-
什么是繼承?
在聚合多個(gè)項(xiàng)目時(shí),如果這些被聚合的項(xiàng)目中需要引入相同的Jar,那么可以將這些Jar寫(xiě)入父pom中,各個(gè)子項(xiàng)目繼承該pom即可。
-
如何實(shí)現(xiàn)繼承?
<groupId>cn.missbe.web.search</groupId> <artifactId>resource-search</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version>
<groupId>父pom所在項(xiàng)目的groupId</groupId> <artifactId>父pom所在項(xiàng)目的artifactId</artifactId> <version>父pom所在項(xiàng)目的版本號(hào)</version> <artifactId>resource-search</artifactId> <groupId>cn.missbe.web.search</groupId> <version>1.0-SNAPSHOT</version>
使用Maven構(gòu)建Web項(xiàng)目
-
New Maven項(xiàng)目:選擇WebApp:
-
若使用JSP,需添加Servlet依賴:
注:Servlet依賴只在編譯和測(cè)試時(shí)使用!
<groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <!-- 只在編譯和測(cè)試時(shí)運(yùn)行 -->
-
在Bulid Path中設(shè)置resource輸出目錄:
-
勾選:Dynamic Web Module
-
刪掉測(cè)試目錄
-
在pom中加入jetty的插件,并設(shè)置JDK版本:
<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.3.10.v20160621</version>
-
運(yùn)行項(xiàng)目:
-
輸入:jetty:run
-
訪問(wèn)127.0.0.1:8080
若出現(xiàn)如下界面,表示成功!
pom.xml詳解
pom.xml是Maven的核心,你的項(xiàng)目需要什么Jar包就在pom.xml里面配置。當(dāng)編譯項(xiàng)目時(shí)Maven讀取該文件,并從倉(cāng)庫(kù)中下載相應(yīng)的Jar包。
<project xmlns="http://maven./POM/4.0.0" xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:schemaLocation="http://maven./POM/4.0.0http://maven./maven-v4_0_0.xsd"> <!--父項(xiàng)目的坐標(biāo)。如果項(xiàng)目中沒(méi)有規(guī)定某個(gè)元素的值, 那么父項(xiàng)目中的對(duì)應(yīng)值即為項(xiàng)目的默認(rèn)值。 坐標(biāo)包括group ID,artifact ID和 version。--> <!--被繼承的父項(xiàng)目的構(gòu)件標(biāo)識(shí)符--> <!--被繼承的父項(xiàng)目的全球唯一標(biāo)識(shí)符--> <!--聲明項(xiàng)目描述符遵循哪一個(gè)POM模型版本。模型本身的版本很少改變,雖然如此, 但它仍然是必不可少的,這是為了當(dāng)Maven引入了新的特性或者其他模型變更的時(shí)候, <modelVersion>4.0.0</modelVersion> <!--項(xiàng)目的全球唯一標(biāo)識(shí)符,通常使用全限定的包名區(qū)分該項(xiàng)目和其他項(xiàng)目。 并且構(gòu)建時(shí)生成的路徑也是由此生成, 如com.mycompany.app生成的相對(duì)路徑為: <groupId>cn.missbe.web</groupId> <!-- 構(gòu)件的標(biāo)識(shí)符,它和group ID一起唯一標(biāo)識(shí)一個(gè)構(gòu)件。換句話說(shuō), 你不能有兩個(gè)不同的項(xiàng)目擁有同樣的artifact ID和groupID;在某個(gè) 特定的group ID下,artifact ID也必須是唯一的。構(gòu)件是項(xiàng)目產(chǎn)生的或使用的一個(gè)東西, Maven為項(xiàng)目產(chǎn)生的構(gòu)件包括:JARs,源碼,二進(jìn)制發(fā)布和WARs等。--> <artifactId>search-resources</artifactId> <!--項(xiàng)目產(chǎn)生的構(gòu)件類(lèi)型,例如jar、war、ear、pom。插件可以創(chuàng)建 他們自己的構(gòu)件類(lèi)型,所以前面列的不是全部構(gòu)件類(lèi)型--> <packaging>war</packaging> <!--項(xiàng)目當(dāng)前版本,格式為:主版本.次版本.增量版本-限定版本號(hào)--> <version>1.0-SNAPSHOT</version> <!--項(xiàng)目的名稱, Maven產(chǎn)生的文檔用--> <name>search-resources</name> <!--項(xiàng)目主頁(yè)的URL, Maven產(chǎn)生的文檔用--> <!-- 項(xiàng)目的詳細(xì)描述, Maven 產(chǎn)生的文檔用。 當(dāng)這個(gè)元素能夠用HTML格式描述時(shí) (例如,CDATA中的文本會(huì)被解析器忽略,就可以包含HTML標(biāo) 簽), 不鼓勵(lì)使用純文本描述。如果你需要修改產(chǎn)生的web站點(diǎn)的索引頁(yè)面, 你應(yīng)該修改你自己的索引頁(yè)文件,而不是調(diào)整這里的文檔。--> <description>A maven project to study maven.</description> <!--描述了這個(gè)項(xiàng)目構(gòu)建環(huán)境中的前提條件。--> <!--構(gòu)建該項(xiàng)目或使用該插件所需要的Maven的最低版本--> <!--構(gòu)建項(xiàng)目需要的信息--> <!--該元素設(shè)置了項(xiàng)目源碼目錄,當(dāng)構(gòu)建項(xiàng)目的時(shí)候, 構(gòu)建系統(tǒng)會(huì)編譯目錄里的源碼。該路徑是相對(duì)于pom.xml的相對(duì)路徑。--> <!--該元素設(shè)置了項(xiàng)目腳本源碼目錄,該目錄和源碼目錄不同: 絕大多數(shù)情況下,該目錄下的內(nèi)容 會(huì)被拷貝到輸出目錄(因?yàn)槟_本是被解釋的,而不是被編譯的)。--> <!--該元素設(shè)置了項(xiàng)目單元測(cè)試使用的源碼目錄,當(dāng)測(cè)試項(xiàng)目的時(shí)候, 構(gòu)建系統(tǒng)會(huì)編譯目錄里的源碼。該路徑是相對(duì)于pom.xml的相對(duì)路徑。--> <!--被編譯過(guò)的應(yīng)用程序class文件存放的目錄。--> <!--被編譯過(guò)的測(cè)試class文件存放的目錄。--> <!--使用來(lái)自該項(xiàng)目的一系列構(gòu)建擴(kuò)展--> <!--描述使用到的構(gòu)建擴(kuò)展。--> <!--構(gòu)建擴(kuò)展的groupId--> <!--構(gòu)建擴(kuò)展的artifactId--> <!--這個(gè)元素描述了項(xiàng)目相關(guān)的所有資源路徑列表,例如和項(xiàng)目相關(guān)的屬性文件, <!--這個(gè)元素描述了項(xiàng)目相關(guān)或測(cè)試相關(guān)的所有資源路徑--> <!-- 描述了資源的目標(biāo)路徑。該路徑相對(duì)target/classes目錄(例如${project.build.outputDirectory})。舉個(gè)例 子,如果你想資源在特定的包里(org.apache.maven.messages),你就必須該元素設(shè)置為org/apache/maven /messages。 然而,如果你只是想把資源放到源碼目錄結(jié)構(gòu)里,就不需要該配置。--> <!--是否使用參數(shù)值代替參數(shù)名。參數(shù)值取自properties元素或者文件里配置的屬性, <!--描述存放資源的目錄,該路徑相對(duì)POM路徑--> <!--包含的模式列表,例如**/*.xml.--> <!--排除的模式列表,例如**/*.xml--> <!--這個(gè)元素描述了單元測(cè)試相關(guān)的所有資源路徑,例如和單元測(cè)試相關(guān)的屬性文件。--> <!--這個(gè)元素描述了測(cè)試相關(guān)的所有資源路徑,參見(jiàn)build/resources/resource元素的說(shuō)明--> <targetPath/><filtering/><directory/><includes/><excludes/> <!--構(gòu)建產(chǎn)生的所有文件存放的目錄--> <!--產(chǎn)生的構(gòu)件的文件名,默認(rèn)值是${artifactId}-${version}。--> <!--當(dāng)filtering開(kāi)關(guān)打開(kāi)時(shí),使用到的過(guò)濾器屬性文件列表--> <!--子項(xiàng)目可以引用的默認(rèn)插件信息。該插件配置項(xiàng)直到被引用時(shí)才會(huì)被解析或綁定到生命周期。 給定插件的任何本地配置都會(huì)覆蓋這里的配置--> <!--plugin元素包含描述插件所需要的信息。--> <!--插件在倉(cāng)庫(kù)里的group ID--> <!--插件在倉(cāng)庫(kù)里的artifact ID--> <!--是否從該插件下載Maven擴(kuò)展(例如打包和類(lèi)型處理器),由于性能原因, 只有在真需要下載時(shí),該元素才被設(shè)置成enabled。--> <!--在構(gòu)建生命周期中執(zhí)行一組目標(biāo)的配置。每個(gè)目標(biāo)可能有不同的配置。--> <!--execution元素包含了插件執(zhí)行需要的信息--> <!--執(zhí)行目標(biāo)的標(biāo)識(shí)符,用于標(biāo)識(shí)構(gòu)建過(guò)程中的目標(biāo),或者匹配繼承過(guò)程中需要合并的執(zhí)行目標(biāo)--> <!--綁定了目標(biāo)的構(gòu)建生命周期階段,如果省略,目標(biāo)會(huì)被綁定到源數(shù)據(jù)里配置的默認(rèn)階段--> <!--配置的執(zhí)行目標(biāo)--> <!--項(xiàng)目引入插件所需要的額外依賴--> <!--參見(jiàn)dependencies/dependency元素--> <!--任何配置是否被傳播到子項(xiàng)目--> <!--參見(jiàn)build/pluginManagement/plugins/plugin元素--> <groupId/><artifactId/><version/><extensions/> <id/><phase/><goals/><inherited/><configuration/> <!--參見(jiàn)dependencies/dependency元素--> <goals/><inherited/><configuration/> <!--模塊(有時(shí)稱作子項(xiàng)目) 被構(gòu)建成項(xiàng)目的一部分。 列出的每個(gè)模塊元素是指向該模塊的目錄的相對(duì)路徑--> <!--發(fā)現(xiàn)依賴和擴(kuò)展的遠(yuǎn)程倉(cāng)庫(kù)列表。--> <!--包含需要連接到遠(yuǎn)程倉(cāng)庫(kù)的信息--> <!--如何處理遠(yuǎn)程倉(cāng)庫(kù)里發(fā)布版本的下載--> <!--true或者false表示該倉(cāng)庫(kù)是否為下載某種類(lèi)型構(gòu)件(發(fā)布版,快照版)開(kāi)啟。 --> <!--該元素指定更新發(fā)生的頻率。Maven會(huì)比較本地POM和遠(yuǎn)程POM的時(shí)間戳。這里的選項(xiàng)是:always(一直),daily(默認(rèn),每日),interval:X(這里X是以分鐘為單位的時(shí)間間隔),或者never(從不)。--> <!--當(dāng)Maven驗(yàn)證構(gòu)件校驗(yàn)文件失敗時(shí)該怎么做:ignore(忽略),fail(失?。?,或者warn(警告)。--> <!-- 如何處理遠(yuǎn)程倉(cāng)庫(kù)里快照版本的下載。有了releases和snapshots這兩組配置, POM就可以在每個(gè)單獨(dú)的倉(cāng)庫(kù)中,為每種類(lèi)型的構(gòu)件采取不同的 策略。 例如,可能有人會(huì)決定只為開(kāi)發(fā)目的開(kāi)啟對(duì)快照版本下載的支持。 參見(jiàn)repositories/repository/releases元素 --> <enabled/><updatePolicy/><checksumPolicy/> <!--遠(yuǎn)程倉(cāng)庫(kù)唯一標(biāo)識(shí)符??梢杂脕?lái)匹配在settings.xml文件里配置的遠(yuǎn)程倉(cāng)庫(kù)--> <id>banseon-repository-proxy</id> <!--遠(yuǎn)程倉(cāng)庫(kù)名稱--> <name>banseon-repository-proxy</name> <!--遠(yuǎn)程倉(cāng)庫(kù)URL,按protocol://hostname/path形式--> <url>http://192.168.1.169:9999/repository/</url> <!-- 用于定位和排序構(gòu)件的倉(cāng)庫(kù)布局類(lèi)型-可以是default(默認(rèn))或者legacy(遺留)。Maven 2為其倉(cāng)庫(kù)提供了一個(gè)默認(rèn)的布局;然 而,Maven 1.x有一種不同的布局。我們可以使用該元素指定布局是default(默認(rèn))還是legacy(遺留)。--> <!--發(fā)現(xiàn)插件的遠(yuǎn)程倉(cāng)庫(kù)列表,這些插件用于構(gòu)建和報(bào)表--> <!--包含需要連接到遠(yuǎn)程插件倉(cāng)庫(kù)的信息.參見(jiàn)repositories/repository元素--> <!--該元素描述了項(xiàng)目相關(guān)的所有依賴。 這些依賴組成了項(xiàng)目構(gòu)建過(guò)程中的一個(gè)個(gè)環(huán)節(jié)。 它們自動(dòng)從項(xiàng)目定義的倉(cāng)庫(kù)中下載。要獲取更多信息,請(qǐng)看項(xiàng)目依賴機(jī)制。--> <groupId>org.apache.maven</groupId> <artifactId>maven-artifact</artifactId> <!--依賴的版本號(hào)。 在Maven 2里, 也可以配置成版本號(hào)的范圍。--> <!-- 依賴類(lèi)型,默認(rèn)類(lèi)型是jar。它通常表示依賴的文件的擴(kuò)展名,但也有例外 。一個(gè)類(lèi)型可以被映射成另外一個(gè)擴(kuò)展名或分類(lèi)器。類(lèi)型經(jīng)常和使用的打包方式對(duì)應(yīng), 盡管這也有例外。一些類(lèi)型的例子:jar,war,ejb-client和test-jar。 如果設(shè)置extensions為 true,就可以在 plugin里定義新的類(lèi)型。所以前面的類(lèi)型的例子不完整。--> <!-- 依賴的分類(lèi)器。分類(lèi)器可以區(qū)分屬于同一個(gè)POM,但不同構(gòu)建方式的構(gòu)件。 分類(lèi)器名被附加到文件名的版本號(hào)后面。例如,如果你想要構(gòu)建兩個(gè)單獨(dú)的構(gòu)件成 JAR, 一個(gè)使用Java 1.4編譯器,另一個(gè)使用Java 6編譯器,你就可以使用分類(lèi)器來(lái)生成兩個(gè)單獨(dú)的JAR構(gòu)件。--> <classifier></classifier> <!--依賴范圍。在項(xiàng)目發(fā)布過(guò)程中,幫助決定哪些構(gòu)件被包括進(jìn)來(lái)。欲知詳情請(qǐng)參考依賴機(jī)制。 - compile :默認(rèn)范圍,用于編譯 - provided:類(lèi)似于編譯,但支持你期待jdk或者容器提供,類(lèi)似于classpath - runtime: 在執(zhí)行時(shí)需要使用 - test: 用于test任務(wù)時(shí)使用 - system: 需要外在提供相應(yīng)的元素。通過(guò)systemPath來(lái)取得 - systemPath: 僅用于范圍為system。提供相應(yīng)的路徑 - optional: 當(dāng)項(xiàng)目自身被依賴時(shí),標(biāo)注依賴是否傳遞。用于連續(xù)依賴時(shí)使用--> <!--僅供system范圍使用。注意,不鼓勵(lì)使用這個(gè)元素, 并且在新的版本中該元素可能被覆蓋掉。該元素為依賴規(guī)定了文件系統(tǒng)上的路徑。 需要絕對(duì)路徑而不是相對(duì)路徑。推薦使用屬性匹配絕對(duì)路徑,例如${java.home}。--> <systemPath></systemPath> <!--當(dāng)計(jì)算傳遞依賴時(shí), 從依賴構(gòu)件列表里,列出被排除的依賴構(gòu)件集。 即告訴maven你只依賴指定的項(xiàng)目,不依賴項(xiàng)目的依賴。此元素主要用于解決版本沖突問(wèn)題--> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> <!--可選依賴,如果你在項(xiàng)目B中把C依賴聲明為可選,你就需要在依賴于B的項(xiàng)目(例如項(xiàng)目A)中顯式的引用對(duì)C的依賴??蛇x依賴阻斷依賴的傳遞性。--> <optional>true</optional> <!-- 繼承自該項(xiàng)目的所有子項(xiàng)目的默認(rèn)依賴信息。這部分的依賴信息不會(huì)被立即解析, 而是當(dāng)子項(xiàng)目聲明一個(gè)依賴(必須描述group ID和 artifact ID信息), 如果group ID和artifact ID以外的一些信息沒(méi)有描述, 則通過(guò)group ID和artifact ID 匹配到這里的依賴,并使用這里的依賴信息。--> <!--參見(jiàn)dependencies/dependency元素--> <!--項(xiàng)目分發(fā)信息,在執(zhí)行mvn deploy后表示要發(fā)布的位置。 有了這些信息就可以把網(wǎng)站部署到遠(yuǎn)程服務(wù)器或者把構(gòu)件部署到遠(yuǎn)程倉(cāng)庫(kù)。--> <!--部署項(xiàng)目產(chǎn)生的構(gòu)件到遠(yuǎn)程倉(cāng)庫(kù)需要的信息--> <!--是分配給快照一個(gè)唯一的版本號(hào)(由時(shí)間戳和構(gòu)建流水號(hào))? 還是每次都使用相同的版本號(hào)?參見(jiàn)repositories/repository元素--> <name>banseon maven2</name> <url>file://${basedir}/target/deploy</url> <!--構(gòu)件的快照部署到哪里?如果沒(méi)有配置該元素,默認(rèn)部署到repository元素配置的倉(cāng)庫(kù), 參見(jiàn)distributionManagement/repository元素--> <name>Banseon-maven2 Snapshot Repository</name> <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url> <!--部署項(xiàng)目的網(wǎng)站需要的信息--> <!--部署位置的唯一標(biāo)識(shí)符,用來(lái)匹配站點(diǎn)和settings.xml文件里的配置--> <name>business api website</name> <!--部署位置的URL,按protocol://hostname/path形式--> scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web <!--項(xiàng)目下載頁(yè)面的URL。如果沒(méi)有該元素,用戶應(yīng)該參考主頁(yè)。 使用該元素的原因是:幫助定位那些不在倉(cāng)庫(kù)里的構(gòu)件(由于license限制)。--> <!-- 給出該構(gòu)件在遠(yuǎn)程倉(cāng)庫(kù)的狀態(tài)。不得在本地項(xiàng)目中設(shè)置該元素, 因?yàn)檫@是工具自動(dòng)更新的。有效的值有:none(默認(rèn)), converted(倉(cāng)庫(kù)管理員從 Maven 1 POM轉(zhuǎn)換過(guò)來(lái)),partner(直接從伙伴Maven 2倉(cāng)庫(kù)同步過(guò)來(lái)),deployed(從Maven 2實(shí)例部 署),verified(被核實(shí)時(shí)正確的和最終的)。--> </distributionManagement> <!--以值替代名稱,Properties可以在整個(gè)POM中使用,也可以作為觸發(fā)條件(見(jiàn)settings.xml配置文件里activation元素的說(shuō)明)。格式是<name>value</name>。-->
參考原文:Maven使用詳解
|