Maven安裝與Maven HelloWorld入門例項
摘要:本文主要講了Maven的安裝過程,以及一些基礎的概念。並用兩個例子講解了Maven在java專案中的使用。
一、Maven安裝過程
必備:下載maven之後,安裝環境變數,跟安裝java環境變數一樣,所以也就不再贅述了。安裝好之後執行一條命令,mvn help:system,執行之後會下載一些需要的庫檔案,一般是放在user/.m2/repository目錄下,也就是預設的本地倉庫的位置。
安裝過程如下:
1.在安裝maven之前,先確保已經安裝JDK1.6及以上版本,並且配置好環境變數。
2.下載maven3,下載地址:http://maven.apache.org/download.html
下載apache-maven-3.1.1-bin.zip檔案後,並解壓到 E:\JavaTool\apache-maven-3.3.1
3.配置maven3的環境變數:先配置M2_HOME的環境變數,新建一個系統變數:M2_HOME , 路徑是:E:\JavaTool\apache-maven-3.3.1,如圖所示:
4、再配置path環境變數,在path值的末尾新增"%M2_HOME%\bin",如下圖所示;
5.點選確定之後,開啟cmd視窗:輸入 mvn -version,出現如下內容表示安裝成功,注意3.1.1是對應於jdk1.7以上的版本,所以自己要看好自己電腦jdk的版本
6、配置成功後開始在Eclipse中配置Maven,點選eclipse選單欄Help->Eclipse Marketplace搜尋關鍵字maven到外掛Maven Integration for Eclipse 並點選安裝即可,如下圖:(可以直接下載J2EE的eclipse編譯器。它都幫你整合好了)
7、重啟後,為了使得Eclipse中安裝的Maven外掛,同windows中安裝的那個相同,需要讓eclipse中的maven重新定位一下,點選Window -> Preference -> Maven -> Installation -> Add進行設定
8、給maven新增本地倉庫
maven預設的倉庫,是放在C:\Users\lin\.m2\repository,lin可以看成是你的使用者名稱,如果不想放在這裡,可以這麼改
- 開啟本地存放maven目錄(或者maven安裝目錄,我的安裝目錄是:E:\JavaTool\apache-maven-3.3.1\conf,這裡沒多大影響,我只是不同的專案有不同的倉庫):比如我的本地存放目錄是:E:\JavaTool\apache-maven-3.3.1\conf
- 開啟conf資料夾下的settings.xml檔案,找到第53行,把註釋去掉,修改成:<localRepository>D:/Util/maven/maven-dependcies</localRepository>當然了,前提是在某個路徑下,手動建立了一個名為 maven-dependcies的資料夾,然後把本地倉庫指向該路徑。
二、初步瞭解maven
Maven是一個採用純Java編寫的開 源專案管理工具。Maven採用了一種被稱之為project object model (POM)概念來管理專案,所有的專案配置資訊都被定義在一個叫做POM.xml的檔案中,通過該檔案,Maven可以管理專案的整個宣告週期,包括編 譯,構建,測試,釋出,報告等等。目前Apache下絕大多數專案都已經採用Maven進行管理。而Maven本身還支援多種外掛,可以方便更靈活的控制 專案
1.瞭解maven的目錄結構,在maven的構建過程中,構建的程式必須有特定的目錄結構,基本的目錄如下所示:
2.對於這個目錄的建立,熟練的建立這個目錄是必備的,但是這樣無助於開發的進度,所以maven自帶了一個archetype工具幫助我們自動生成專案的骨架。在cmd中切換到工程的目錄,執行命令mvn archetype:generate,就是自動生成需要的目錄,在生成的過程中會需要輸入一些欄位,在下面說明的pom.xml的時候再講。
3.pom.xml<Project Object Model,專案物件模型>檔案,這個檔案可以理解為整個專案的控制檔案,對於這個檔案有一下幾個屬性需要說明。
<modelVersion> :預設是4.0.0,指定了當前POM模型的版本。
<groupId>:定義了專案屬於哪一個組,這個組通常與專案所在的組織或者公司關聯,如com.microsoft.myapp, com.google.myapp等等。
<artifactId>:定義了當前maven專案在組中的唯一ID,可以定義為專案的名稱如:HelloWorld
<version>:指定當前的版本,如1.0-SNAPSHOT,snapshot是快照的意思,說明該專案還在開發中,是不穩定的版本。
而一般通過archetype工具生成的包名就是groupId+artifactId。
三、新建一個簡單的maven專案:maven-hellolworld
1、新建一個Maven專案
2、這裡選了quickstart,
3、輸入工程名,引用包名
名
4、自動生成的如下,我們不需要這
pom.xml檔案 如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lin.learning</groupId>
<artifactId>maven-hellowrold</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven-hellowrold</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
5、修改內容
將App.java改成如下
package com.lin.learning.maven_hellowrold;
/**
* Hello world!
*
*/
public class App
{
public void sayHello(){
System.out.println( "Hello World!林炳文Evankaka" );
}
}
再把AppTest.java內容改成如下
package com.lin.learning.maven_hellowrold;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
App app = new App();
app.sayHello();
}
}
6、測試執行
選 中testApp().然後以Junit的除錯方式執行
執行結果:綠色表明案例通過,執行成功
7、打包輸出
現在好了,可以把這個檔案 打包成jar提供給其它專案使用了,專案右鍵-》屬性
輸入以下內容,開始生成 jar
最終輸出結果:
表明已構建成功,去倉庫看看打包成jar沒
jar已打包,其它java專案都可以使用,不管是不是maven專案
四、使用maven專案
這裡我要再來新建 一個maven-test專案,並且來新增上一個maven-helloworld的包,從而每次maven-helloworld更新jar包時,maven-test都不用手動去替換jar包,直接update project即可。
同樣的過程,還是新建一個maven-test的專案
把app.java改成AppHello,避免和上一個重名
同時將AppHello.java內容改成如下
package com.lin.learning.maven_test;
import com.lin.learning.maven_hellowrold.App;
/**
* Hello world!
*
*/
public class AppHello
{
public static void main( String[] args )
{
App app = new App();
app.sayHello();
}
}
pom.xml檔案 新增maven-helloworld的jar包依賴
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lin.learning</groupId>
<artifactId>maven-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven-test</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.lin.learning</groupId>
<artifactId>maven-hellowrold</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
接著,更新下整個maven 工程
選中強制更新
更新好了,直接選中AppHello的main,然後右鍵執行,輸出了結果
如果,這時maven-helloworld更改了內容,比如它的App.java更改成如下。新增一個方法
package com.lin.learning.maven_hellowrold;
/**
* Hello world!
*
*/
public class App
{
public void sayHello(){
System.out.println( "Hello World!林炳文Evankaka" );
}
public void sayAll(){
System.out.println( "我是林炳文Evankaka、林炳文Evankaka、林炳文Evankaka、林炳文Evankaka、林炳文Evankaka " );
}
}
這裡,maven-test也要用到這個sayall方法。
同理,直接maven->update project就會自動引入新的jar包
然後呼叫方法如下:
package com.lin.learning.maven_test;
import com.lin.learning.maven_hellowrold.App;
/**
* Hello world!
*
*/
public class AppHello
{
public static void main( String[] args )
{
App app = new App();
app.sayHello();
app.sayAll();
}
}
輸出結果