Maven學習總結(二)——Maven項目構建過程練習


  上一篇只是簡單介紹了一下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,添加如下的代碼:

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4   <groupId>me.gacl.maven</groupId>
 5   <artifactId>Hello</artifactId>
 6   <version>0.0.1-SNAPSHOT</version>
 7   <name>Hello</name>
 8   
 9     <!--添加依賴的jar包-->
10     <dependencies>
11         <!--項目要使用到junit的jar包,所以在這里添加junit的jar包的依賴-->
12         <dependency>
13             <groupId>junit</groupId>
14             <artifactId>junit</artifactId>
15             <version>4.9</version>
16             <scope>test</scope>
17         </dependency>        
18         
19     </dependencies>
20 </project>

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

  

  Hello.java的代碼如下:

1 package me.gacl.maven;
2 
3 public class Hello {
4     
5     public String sayHello(String name){
6         return "Hello "+name+"!";
7     }
8 }

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

  

  HelloTest.java的代碼如下:

 1 package me.gacl.maven;
 2 //導入junit的包
 3 import org.junit.Test;
 4 import static junit.framework.Assert.*;
 5 
 6 public class HelloTest {
 7 
 8     @Test
 9     public void testHello(){
10         Hello hello = new Hello();
11         String results = hello.sayHello("gacl");
12         assertEquals("Hello gacl!",results);        
13     }
14 }

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,添加如下的代碼:

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4   <groupId>me.gacl.maven</groupId>
 5   <artifactId>HelloFriend</artifactId>
 6   <version>0.0.1-SNAPSHOT</version>
 7   <name>HelloFriend</name>
 8   
 9     <!--添加依賴的jar包-->
10     <dependencies>
11         <!--項目要使用到junit的jar包,所以在這里添加junit的jar包的依賴-->
12         <dependency>
13             <groupId>junit</groupId>
14             <artifactId>junit</artifactId>
15             <version>4.9</version>
16             <scope>test</scope>
17         </dependency>
18         <!--項目要使用到Hello的jar包,所以在這里添加Hello的jar包的依賴-->
19         <dependency>
20             <groupId>me.gacl.maven</groupId>
21             <artifactId>Hello</artifactId>
22             <version>0.0.1-SNAPSHOT</version>
23             <scope>compile</scope>
24         </dependency>    
25     </dependencies>
26 </project>

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

  

  HelloFriend.java的代碼如下:

 1 package me.gacl.maven;
 2 
 3 import me.gacl.maven.Hello;
 4 
 5 public class HelloFriend {
 6 
 7     public String sayHelloToFriend(String name){
 8         
 9         Hello hello = new Hello();
10         String str = hello.sayHello(name)+" I am "+this.getMyName();
11         System.out.println(str);
12         return str;
13     }
14     
15     public String getMyName(){
16         return "John";
17     }
18 }

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

  

  HelloFriendTest.java的代碼如下:

 1 package me.gacl.maven;
 2 
 3 import static junit.framework.Assert.assertEquals;
 4 import org.junit.Test;
 5 import me.gacl.maven.Hello;
 6 
 7 public class HelloFriendTest {
 8 
 9     @Test
10     public void tesHelloFriend(){
11         
12         HelloFriend helloFriend = new HelloFriend();
13         String results = helloFriend.sayHelloToFriend("gacl");
14         assertEquals("Hello gacl! I am John",results);
15     }
16 }

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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM