使用不需要上網(wǎng)單獨(dú)下載jar包,只需要在配置文件pom.xml中配置jar包的依賴(lài)關(guān)系,就可以自動(dòng)的下載jar包到我們的項(xiàng)目中。這樣,別人開(kāi)發(fā)或者使用這個(gè)工程時(shí),不需要來(lái)回的拷貝jar包,只需要復(fù)制這個(gè)pom.xml就可以自動(dòng)的下載這些jar包。而且,我們自己下載jar包,還有可能造成版本的不一致,這樣在協(xié)同開(kāi)發(fā)的過(guò)程中就有可能造成代碼運(yùn)行的不一致。通過(guò)使用maven精確的匹配jar包,就不會(huì)出現(xiàn)這種問(wèn)題了。
目錄結(jié)構(gòu)
| 目錄 | 目的 |
|---|---|
| ${basedir} | 存放 pom.xml和所有的子目錄 |
| ${basedir}/src/main/java | 項(xiàng)目的 java源代碼 |
| ${basedir}/src/main/resources | 項(xiàng)目的資源,比如說(shuō) 數(shù)據(jù)庫(kù)文件 |
| ${basedir}/src/test/java | 項(xiàng)目的測(cè)試類(lèi),比如說(shuō) JUnit代碼 |
| ${basedir}/src/test/resources | 測(cè)試使用的資源 |
| ${basedir}/target | 編譯好的文件 |
項(xiàng)目坐標(biāo)
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
groupId:公司名稱(chēng)
artifactId:所述的項(xiàng)目名稱(chēng),由于有的項(xiàng)目并不是一個(gè)jar包構(gòu)成的,而是由很多的jar包組成的。因此這個(gè)artifactId就是整個(gè)項(xiàng)目的名稱(chēng)。
version:版本號(hào)。
packaging:包的類(lèi)型,一般都是jar,也可以是war之類(lèi)的。如果不填,默認(rèn)就是jar。
scope:主要用于依賴(lài)部署
主要有5個(gè)值:
* compile,缺省值,適用于所有階段,會(huì)隨著項(xiàng)目一起發(fā)布。
* provided,類(lèi)似compile,期望JDK、容器或使用者會(huì)提供這個(gè)依賴(lài)。如servlet.jar。
* runtime,只在運(yùn)行時(shí)使用,如JDBC驅(qū)動(dòng),適用運(yùn)行和測(cè)試階段。
* test,只在測(cè)試時(shí)使用,用于編譯和運(yùn)行測(cè)試代碼。不會(huì)隨項(xiàng)目發(fā)布。
* system,類(lèi)似provided,需要顯式提供包含依賴(lài)的jar,Maven不會(huì)在Repository中查找它。