首先說明一下,這篇文章并沒有涉及maven在eclipse中的使用,搭建的環境只是支持了maven的命令,文章中的這個小例子是用記事本寫的。關于eclipse配置maven,下篇文章會講。
一、Maven環境搭建
maven是使用java開發的,所以要使用maven,必須得有jdk,這里就不再贅述了。
(1)http://maven.apache.org/下載相應的壓縮包
(2)配置環境變量
在系統變量中添加M2_HOME,值為Maven的安裝路徑
在Path值的后面添加;%M2_HOME%\bin
(3)在命令行中輸入mvn -v
如果顯示如上圖,則說明配置成功,否則檢查一下哪步出錯了。
二、Maven介紹
(1)maven兩大核心
依賴管理:對jar包進行管理。
項目構建:項目在編碼完成后,對項目進行編譯、測試、打包、部署都可以通過命令來實現。
(2)maven倉庫類型
- 本地倉庫:在個人的計算機上。
- 私服:存在于局域網上的一臺服務器。
- 中央倉庫:在互聯網上,有maven團隊進行維護。
如果我們擁有一個中央的倉庫那該多好,想用什么jar包就用什么jar,但無奈那堵墻,使得中央倉庫的下載速度很慢。我們可以使用阿里云的maven鏡像,里面的jar是比較全的,關鍵下載速度還快。只需要在我們解壓出來的maven壓縮包里的conf文件夾下的settings.xml配置一下就可以了。打開找到 <mirrors>標簽,在里面加上下面的代碼
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
三、Maven項目的目錄結構
src
? ? ? ?-main
? ? ? ? ? ? ? ?-java
? ? ? ? ? ? ? ? ? ? ? ?-package
? ? ? ?-test
? ? ? ? ? ? ? ?-java
? ? ? ? ? ? ? ? ? ? ? ?-package
? ? ? ?-resources
四、maven常用命令
介紹命令之前,先創建好maven項目并寫一些代碼。
在main文件夾下有一個Maven01.java
package com.codeliu.maven;
public class Maven01 {
public String say() {
return "Hello world";
}
}
在test 文件夾下有一個MavenTest.java
package com.codeliu.maven;
import org.junit.*;
public class MavenTest {
@Test
public void testMaven01() {
Assert.assertEquals("Hello world", new Maven01().say());
}
}
下面開始介紹命令。
(1)mvn compile
聽名字都知道,這個肯定是編譯,將.java文件編譯成.class文件。
我們進入項目的根目錄下,輸入這個命令,會發現根目錄下會多一個target的文件夾,里面就有.class文件。
(2)mvn clean
這個命令,可以清除我們生成的.class文件,執行此命令后,target文件夾會消失。
(3)mvn test
執行此命令后,就會運行test文件夾下的測試代碼
注意:測試代碼必須放在test文件下,且必須以*Test.java命名。
(4)mvn package
這個命令是把項目進行打包,如果是普通的java項目,就會打包成jar,如果是web項目,就會打包成war。
它會存放在我們項目根目錄下的target文件夾下。
(5)mvn install
有時候如果我們一個項目要用到另一個項目的一些代碼,那肯定是copy啊,現在使用maven就不一樣了,我們可以使用mvn install命令,將我們自己的項目生成jar包,這樣其他項目要使用只需要import一下就可以了。
可以看到,把生成的jar包放在了這個目錄下,其實這個目錄就是我們maven本地倉庫的默認路徑(如果你沒有進行修改的話)
五、maven項目的生命周期
在maven中存在“三套”生命周期,它們互不影響,相互獨立。
CleanLifeCycle:清理生命周期,對應上面的clean命令。
defaultLifeCycle:默認生命周期,compile,test,package,install,deploy(部署)。
siteLifeCycle:站點生命周期。site。
為啥說它們互不影響呢?因為執行clean命令,并不會執行默認生命周期中的命令,執行compile命令,也不會執行clean命令。但如果你執行install命令,那么前面的compile,test,package操作都會執行。