Maven pom.xml添加jar文件,座標值該怎麼寫?

一、[b]座標[/b]是Maven最基本的概念,Maven的很多其他核心機制都依賴於座標,其中最顯著的就是倉庫和依賴管理。對於倉庫來說,有了座標就知道在什麼位置存儲構件的內容。

例如junit:junit:4.8.2 就對應倉庫中的路徑/junit/junit/4.8.2/junit-4.8.2.pom和/junit/junit/4.8.2/junit-4.8.2.jar。這裏第一個junit是groupId,第二個junit是artifactId,4.8.2是version。


二、[b]問題[/b]:對於初學者或剛使用maven的技術人員來說,若想在pom.xml中添加一個包依賴,groupId和artifactId 座標該怎麼寫,都是無從下手,甚至隨便寫一個,這樣,在保存pom.xml時,maven會自動的從中央倉庫下載對應的jar文件,結果都是下載失敗,根本下載不下來,原因很簡單,因爲根據你所寫的座標(groupId,artifactId,version),根本找不到對應的jar文件。這個問題,想了很久,終於找到解決方法了。

三、[b]查找正確的jar文件座標[/b]

如:項目中需要添加XmlSchema-1.4.3.jar
步驟:1、訪問maven中央倉庫:http://mvnrepository.com(或者訪問:http://grepcode.com/) 在搜索框中輸入XmlSchema 結果會顯示,jar文件對應的具體座標
2、將座標,配置到pom.xml即可,這時,maven會成功下載對應的jar.

搜索結果:
Maven-Central / org.apache.ws.commons.schema / XmlSchema / [1.4.6] 1.4.7 [SNASHOT - 1.4.7]

org.apache.ws.commons.schema 對應的是groupId
XmlSchema 對應的是artifactId
1.4.7 對應的是版本號version


<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>

若隨便寫成:
<dependency>
<groupId>org.apache.ws</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.7</version>
</dependency>
則maven 是下載不成功的。


四、[b]配置完對應的座標後,部署項目時,會莫名其妙的出現一些其他的jar文件,這些並沒有在pom.xml中配置,從哪來的呢?怎麼去掉呢?[/b]
[b]方法一:[/b] 部署完後,在對應服務器項目中手動刪除(如:tomcat),這個特麻煩,每次部署都要刪除。若多出的jar,對項目啓動沒有影響,則可以不刪除,若對項目啓動報錯,則必須刪除。

[b]方法二:[/b] 第一、在pom.xml中,找出由哪個jar文件加載時,關聯出來多餘的jar文件。第二、修改pom.xml。

修改前:(neethi-3.0.1.jar中會關聯出woodstox-core-asl-4.0.8.jar,需要打開neethi.jar就知道了,添加節點<exclusions> 寫上具體需要過慮的jar,指定groupId,artifactId即可)
<dependency>
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>3.0.1</version>
</dependency>

修改後:
<dependency>
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>3.0.1</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>4.0.8</version>
</exclusion>
</exclusions>
</dependency>

這時,項目部署後,woodstox-core-asl-4.0.8.jar,將不會出現了。



五、[b]父項目與子項目,配置jar依賴關係[/b]
1、父項目,主要是配置全局的jar,指定對應的版本號。
2、子項目,若需要使用jar文件,則只要指定groupId/artifactId即可。不需要寫版本號。減少jar衝突的可能。

五、希望對你們有幫助,若有不明白的地方,可以隨時QQ聯繫 251693481
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章