Maven學習筆記之第一個Maven項目(Linux)


  Maven是Apache旗下的管理Java項目jar包的項目管理工具,有了它可以很方便構建和管理我們的Java項目,你不必在互聯網上逐個查找你需要的第三方jar包,你只需在maven repository(https://mvnrepository.com/)上搜索就可以了,包括所有的版本。下面記錄學習過程的第一個Maven項目,在學習之前需要配置JDK和Maven的環境變量,具體需要查找資料搭建,不難。注意:JDK版本需要1.7及以上,Maven的官網下載也有說明(requirement)。如果在終端輸入命令mvn -v顯示如下信息的為安裝成功了,否則為安裝失敗。創建的文件都存到github上了,地址:https://github.com/quanbisen/firstmaven

  博文內容:

  1. 創建maven項目文件
  2. maven項目文件說明
  3. 編寫項目源代碼及測試代碼
  4. 編譯項目、運行測試和打包
  5. 生成站點和報告文件

  1. 創建maven項目文件

  創建maven項目文件,在終端執行mvn archetype:generate就可以了,執行命令

mvn archetype:generate

  它會聯網自動下載一些需要的插件文件,然后要求選擇項目的類型(Choose archetype),我按了enter選擇默認(默認是7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)),包含maven工程樣例。

  然后到輸入groupId、artifactId、version和package,groupId一般輸入公司名稱就可以了,而artifactId輸入項目名稱,package為包名。如下圖所示:

  最后enter鍵確定,提示創建成功。

  執行切換目錄命令,進入創建的項目,查看創建的項目文件結構。

cd firstmaven  #切換目錄到firstmaven
tree   #查看該文件夾下目錄結構

  2. maven項目文件說明

  上面的結構圖可以看到maven項目的結構,由一個pom.xml文件和src目錄組成,src下面分為main和test。pom.xml文件是maven的項目管理文件,可以向該文件添加dependency(即jar包)、設置編譯、打包等插件等。main文件夾存放項目的源代碼,test文件存放測試的代碼(這里默認創建了helloworld的App模板了)。

  • 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>edu.gzmtu</groupId>
  <artifactId>firstmaven</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>firstmaven</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>

  上面的pom.xml文件是默認生成的,其詳細說明如下:

<groupId>:創建項目時指定的groupId
<artifactId>:創建項目時指定的artifactId
<version>:創建項目時指定的version
<packaging>:項目編譯好后,打成jar包安裝發布
<denpendency>:測試時需要的JUnit jar包,groupId為junit,artifactId為junit,version為3.8.1,scope為test。

  • main文件夾

   main文件夾存放項目java源文件,如創建的模板文件的App.java

>>main/java/lollipop/App.java

package lollipop;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}
  • test文件夾

  test文件存放源代碼的測試文檔,如創建的模板文件的AppTest.java

>>test/java/lollipop/AppTest.java

package lollipop;

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()
    {
        assertTrue( true );
    }
}

  3. 編寫項目源代碼及測試代碼

  這里編寫一個統計某個字符串某個字符出現次數的Util類,並編寫UtilTest類的測試方法。其中Util類存放在main目錄下的lollipop包,UtilTest類存放在test目錄下的lollipop包,並且修改junit的版本為4.x版本,3.x版本我測試時報錯。

>>main/java/lollipop/Util.java

package lollipop;

/**
 * 統計字符的一個工具類
 * @author super lollipop
 * @version 2019/10/6
 */
public final class Util {
    /**
     * 統計某個字符串某個字符出現次數的函數
     * @param string 某個字符串
     * @param character 某個字符串
     * @return int 數字
    * */
    public static int countCharacter(String string,char character){
        char[] chars = string.toCharArray();
        int count = 0;
        for (char c:chars){
            if (c == character){
                count = count + 1;
            }
        }
        return count;
    }
}

>>test/java/lollipop/UtilTest.java

package lollipop;

import junit.framework.Assert;
import org.junit.Test;

/**
 * 測試Util工具類的測試類
 * @author super lollipop
 * @version 2019/10/6
 */
public class UtilTest {

    /**
     * 單元測試,對Util的countCharacter進行測試*/
    @Test
    public void testCountCharacter(){
        String string= "計科164-09-lollipop";
        char character = '-';
        int countExpect = 2;
        int count = Util.countCharacter(string,character);
        Assert.assertEquals(countExpect,count);
    }
}

>>pom.xml文件 (修改了junit的版本為4.10)

<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>edu.gzmtu</groupId>
  <artifactId>firstmaven</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>firstmaven</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>4.10</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

  4. 編譯項目、運行測試和打包

  編譯項目使用mvn compile命令,執行命令:

mvn compile

              ......

  可以看到編譯成功了(BUILD SUCCESS),輸入mvn clean可以把編譯的class文件清除掉。下面開始測試,執行命令:

mvn test

           ......

   可以看到測試運行了兩個類,AppTest(模板創建的)和UtilTest(我創建的)測試都通過了。我們還可以把本項目打包成jar文件,輸入命令:

mvn install

       ......

   可以看到提示信息上的/home/lollipop/.m2/repository/edu/gzmtu/firstmaven/1.0/firstmaven-1.0.jar,mvn把我們的項目文件jar包存儲到maven管理的repository目錄下了。執行ll命令查看目錄下的~/.m2/repository/edu/gzmtu/firstmaven/1.0/文件,可以看到生成的jar包文件

  5. 生成站點和報告文件

  在執行生成站點和報告文件之前,需要先添加插件,具體為添加maven-project-info-reports-plugin和maven-javadoc-plugin,只需要修改pom.xml文件就可以添加插件了。

>>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>edu.gzmtu</groupId>
  <artifactId>firstmaven</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>firstmaven</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.7</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.7</version>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
  • 生成站點文件 

  生成站點文件輸入命令mvn site就可以了,它會生成一個index.html文件並存儲在target/site/目錄下,輸入命令:

mvn site

        ......

  用瀏覽器打開站點文件,文件內容顯示本項目的信息,包括插件、版權、團隊等信息(我這里沒有配置)。如下圖所示:

  • 生成報告文檔

  生成報告文檔是生成API Doc文檔,和JDK的Doc文檔類似,它會生成一個index.html文件並存儲在target/site/apidocs/目錄下,輸入命令:

mvn javadoc:javadoc

        ......

  用瀏覽器打開報告文件,文件顯示了本項目的Java源代碼的API,如下圖所示:

 

------分割線------


  順帶說,上面介紹的是maven在本地的使用。現在IDEA編譯器已經集成了maven了,可以很方便地使用圖形界面管理我們的Java項目,當然IDEA也支持命令行方式操作。


免責聲明!

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



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