maven 學習總結(二)——Maven專案構建過程練習

Coding-lover發表於2015-09-22

  上一篇只是簡單介紹了一下maven入門的一些相關知識,這一篇主要是體驗一下Maven高度自動化構建專案的過程

一、建立Maven專案

1.1、建立Hello專案

  1、首先建立Hello專案,同時建立Maven約定的目錄結構和pom.xml檔案

    Hello
      | –src
      | —–main
      | ———-java
      | ———-resources
      | —–test
      | ———java
      | ———resources
      | –pom.xml

  2、編輯專案Hello根目錄下的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>me.gacl.maven</groupId>
  <artifactId>Hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Hello</name>

    <!--新增依賴的jar包-->
    <dependencies>
        <!--專案要使用到junit的jar包,所以在這裡新增junit的jar包的依賴-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>        

    </dependencies>
</project>

  3、在src/main/java/me/gacl/maven目錄下新建檔案Hello.java
  

  Hello.java的程式碼如下:

package me.gacl.maven;

public class Hello {

    public String sayHello(String name){
        return "Hello "+name+"!";
    }
}

  4、在/src/test/java/me/gacl/maven目錄下新建測試檔案HelloTest.java 

  HelloTest.java的程式碼如下:

package me.gacl.maven;
//匯入junit的包
import org.junit.Test;
import static junit.framework.Assert.*;

public class HelloTest {

    @Test
    public void testHello(){
        Hello hello = new Hello();
        String results = hello.sayHello("gacl");
        assertEquals("Hello gacl!",results);        
    }
}

1.2、使用Maven編譯、清理、測試、打包專案

1、使用Maven編譯專案,編譯專案的命令是:”mvn compile”

  開啟cmd命令列,

  進入Hello專案根目錄執行”mvn compile”命令編譯專案的java類

  編譯成功之後,可以看到hello專案的根目錄下多了一個【target】資料夾,這個資料夾就是編譯成功之後Maven幫我們生成的資料夾,如下圖所示:

  開啟【target】資料夾,可以看到裡面有一個【classes】資料夾,如下圖所示:

  【classes】資料夾中存放的就是Maven我們編譯好的java類,如下圖所示:

  這就是使用Maven自動編譯專案的過程。

2、使用Maven清理專案,清理專案的命令是:”mvn clean”

  進入Hello專案根目錄執行”mvn clean”命令清理專案,清理專案的過程就是把執行”mvn compile”命令編譯專案時生成的target資料夾刪掉,如下圖所示:

3、使用Maven測試專案,測試專案的命令是:”mvn test”

  進入Hello專案根目錄執行”mvn test”命令測試專案,如下圖所示:

  測試成功之後,可以看到hello專案的根目錄下多了一個【target】資料夾,這個資料夾就是測試成功之後Maven幫我們生成的資料夾,如下圖所示:
  

  開啟【target】資料夾,可以看到裡面有一個【classes】和【test-classes】資料夾,如下圖所示:

  也就是說,我們執行執行”mvn test”命令測試專案時,Maven先幫我們編譯專案,然後再執行測試程式碼。

4、使用Maven打包專案,打包專案的命令是:”mvn package”

  進入Hello專案根目錄執行”mvn package”命令測試專案,如下圖所示:

  打包成功之後,可以看到hello專案的根目錄下的【target】資料夾中多了一個Hello-0.0.1-SNAPSHOT.jar,這個Hello-0.0.1-SNAPSHOT.jar就是打包成功之後Maven幫我們生成的jar檔案,如下圖所示:

5、使用Maven部署專案,部署專案的命令是:”mvn install”

  進入Hello專案根目錄執行”mvn install”命令測試專案,如下圖所示:

  安裝成功之後,首先會在hello專案的根目錄下生成【target】資料夾,開啟【target】資料夾,可以看到裡面會有Hello-0.0.1-SNAPSHOT.jar,這個Hello-0.0.1-SNAPSHOT.jar就是安裝成功之後Maven幫我們生成的jar檔案,如下圖所示:

  除此之外,在我們存放Maven下載下來的jar包的倉庫也會有一個Hello-0.0.1-SNAPSHOT.jar,所以Maven安裝專案的過程,實際上就是把專案進行【清理】→【編譯】→【測試】→【打包】,再把打包好的jar放到我們指定的存放jar包的Maven倉庫中,如下圖所示:

  所以使用”mvn install”命令,就把maven構建專案的【清理】→【編譯】→【測試】→【打包】的這幾個過程都做了,同時將打包好的jar包釋出到本地的Maven倉庫中,所以maven最常用的命令還是”mvn install”,這個命令能夠做的事情最多。

1.2、組合使用Maven的命令

  maven的編譯,清理,測試,打包,部署命令是可以幾個命令同時組合起來使用的,常用的命令組合如下:

  1、先清理再編譯:”mvn clean compile”,如下所示:

  還有的就是”mvn clean test”,”mvn clean package”,”mvn clean install”,這些組合命令都比較常用。

  以上就是關於Maven構建專案的各個個過程演示。

二、在別的專案中使用通過Maven安裝生成的專案的jar包

  在上面,我們使用mvn install命令將hello這個專案打包成了Hello-0.0.1-SNAPSHOT.jar包並且釋出到本地的maven倉庫E:\repository\me\gacl\maven\Hello\0.0.1-SNAPSHOT中,下面我們來看看如何在別的專案中使用Hello-0.0.1-SNAPSHOT.jar

  1、新建HelloFriend專案,同時建立Maven約定的目錄結構和pom.xml檔案
    HelloFriend
      | –src
      | —–main
      | ———-java
      | ———-resources
      | —–test
      | ———java
      | ———resources
      | –pom.xml

  如下圖所示:

  2、編輯專案HelloFriend根目錄下的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>me.gacl.maven</groupId>
  <artifactId>HelloFriend</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>HelloFriend</name>

    <!--新增依賴的jar包-->
    <dependencies>
        <!--專案要使用到junit的jar包,所以在這裡新增junit的jar包的依賴-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
        <!--專案要使用到Hello的jar包,所以在這裡新增Hello的jar包的依賴-->
        <dependency>
            <groupId>me.gacl.maven</groupId>
            <artifactId>Hello</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>    
    </dependencies>
</project>

  3、在src/main/java/me/gacl/maven目錄下新建檔案HelloFriend.java,如下圖所示:

  HelloFriend.java的程式碼如下:

package me.gacl.maven;

import me.gacl.maven.Hello;

public class HelloFriend {

    public String sayHelloToFriend(String name){

        Hello hello = new Hello();
        String str = hello.sayHello(name)+" I am "+this.getMyName();
        System.out.println(str);
        return str;
    }

    public String getMyName(){
        return "John";
    }
}

  4、在/src/test/java/me/gacl/maven目錄下新建測試檔案HelloFriendTest.java,如下圖所示:

  HelloFriendTest.java的程式碼如下:

package me.gacl.maven;

import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import me.gacl.maven.Hello;

public class HelloFriendTest {

    @Test
    public void tesHelloFriend(){

        HelloFriend helloFriend = new HelloFriend();
        String results = helloFriend.sayHelloToFriend("gacl");
        assertEquals("Hello gacl! I am John",results);
    }
}

  5、在HelloFriend目錄下執行命令”mvn package”測試Hello-0.0.1-SNAPSHOT.jar裡面的類是否引用成功,如下所示:

轉載自:Maven 學習總結(二)——Maven專案構建過程練習

相關文章