前言:java
因爲最近工做學習,老是能碰到Maven的源碼。雖然平時工做並不使用Maven,可是爲了學習一些源碼,仍是必需要了解下。這篇文章不是一個全面的Maven解析,而是一個簡單的介紹,包括Eclipse中如何使用Maven,如何利用Maven工程學習。web
按部就班,你將會學到下面的知識:apache
maven的相關書籍!app
什麼是maven?eclipse
如何在eclipse中使用maven?maven
maven的工程是什麼樣子?工具
Eclipse中maven的經常使用命令!單元測試
首先推薦兩本書,都是網上找的pdf。因爲我本身沒有工做需求,所以也只是簡單的瞭解一下而已,並無深刻的研究。有興趣的朋友,能夠多看看這兩本書。學習
《Maven權威指南》測試
《Maven實戰》
Maven是一個用於項目構建的工具,經過它便捷的管理項目的生命週期。即項目的jar包依賴,開發,測試,發佈打包。
下面我本身總結一下它的幾個特色,看了這些特色,也許對maven有更多的瞭解。
1 jar包依賴
這個也許會maven最突出的特色了使用maven不須要上網單獨下載jar包,只須要在配置文件pom.xml中配置jar包的依賴關係,就能夠自動的下載jar包到咱們的項目中。這樣,別人開發或者使用這個工程時,不須要來回的拷貝jar包,只須要複製這個pom.xml就能夠自動的下載這些jar包。
並且,咱們本身下載jar包,還有可能形成版本的不一致,這樣在協同開發的過程當中就有可能形成代碼運行的不一致。經過使用maven精確的匹配jar包,就不會出現這種問題了。
2 項目座標
Maven經過特定的標識來定義項目名稱,這樣既能夠惟一的匹配其餘的jar包,也能夠經過發佈,使別人能使用本身的發佈產品。這個標識就被叫作座標,長的其實很普通,就是簡單的xml而已:
1 <groupId>com.test</groupId> 2 <artifactId>maventest</artifactId> 3 <version>0.0.1-SNAPSHOT</version> 4 <packaging>jar</packaging> 5 6 <name>maventest</name> 7 <url>http://maven.apache.org</url>
groupId:所述的項目名稱,因爲有的項目並非一個jar包構成的,而是由不少的jar包組成的。所以這個groupId就是整個項目的名稱。
artifactId:包的名稱。
version:版本號。
packaging:包的類型,通常都是jar,也能夠是war之類的。若是不填,默認就是jar。
name和url,一個是名稱,一個是maven的地址。主要就是上面的幾個參數。
當想要依賴什麼jar的時候就能夠經過下面的方式依賴:
1 <dependencies> 2 <dependency> 3 <groupId>junit</groupId> 4 <artifactId>junit</artifactId> 5 <version>3.8.1</version> 6 <scope>test</scope> 7 </dependency> 8 </dependencies>
各個屬性的內容基本上都是同樣的。
這裏要注意的是jar包的命名規則:
artifactId-version[-classifier].packaging
好比上面的pom.xml生成的jar包名字就是:maventest-0.0.1-SNAPSHOT.jar。
這裏的classifier是可選的,可是有的項目可能還須要導出附屬的一些文件,如javadoc,source等等,那麼這個地方就須要配置一個字符串。通常都是JDKXXX之類的。
3 測試驅動
Maven是測試驅動的開發思路,所以工程建立初期,就包含兩個文件夾,main和test。一個用於放置開發的java文件,一個用於寫test單元測試。這樣每次開發的時候,提早設計單元測試,就能幫助減小BUG。
我使用的eclipse有自帶的maven插件,所以直接建立就能夠了。這裏就不介紹如何安裝maven了。下面介紹一下maven工程的建立:
1 如何建立maven工程:
直接點擊新建,在裏面能夠找到Maven選項卡,點擊Maven Project建立Maven工程
2 選擇默認的工程位置
3 建立工程,紅色是建立普通的maven工程的。粉色是建立web工程的。
6 填寫相關的groupId artifactId version等信息
點擊完成就建立好了一個簡單的maven工程。
maven的工程通常都是以下的結構:
first_maven
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- test
| | `-- App.java
| `-- resources
| `-- META-INF
| `-- application.properties
`-- test
`-- java
`-- com
`-- test
`-- AppTest.java
pom.xml:用於定義或者添加jar包的依賴
src-main:用於存放java源文件
src-test:用於存放測試用例。
也許工程下還會出現target文件夾,這個是用來生成對應的class文件或發佈的jar包。
點擊Run As就能夠發現幾個Maven的命令:
Maven Build:
這個命令用於編譯Maven工程,執行命令後會在target文件夾中的classes中生成對應的class文件。
Maven Clean:
刪除target文件夾,即刪除生成的package包以及class等文件。
Maven Test:
先自動進行編譯,在運行全部的測試用例。
Maven install:
發佈生成對應的package包。
注意:
留意上面的命令的做用,build和test都會生成相應的class文件。也就是說,當你新建一個maven工程,或者clean一個maven工程後,若是沒有使用這兩個命令,直接針對類進行測試,會跑出java.class.notfound的錯誤。由於此時尚未編譯生成class文件,若是有朋友發現這個問題注意一下就行了。(該部分只針對舊版本,新版本如maven3.3是能夠自動編譯的)
只有使用了上面的兩個命令後,才能針對某個類進行單元測試。