1. 程式人生 > >Maven安裝與Maven HelloWorld入門例項

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();
    }
}
輸出結果