1. 程式人生 > >Maven簡單理解和介紹

Maven簡單理解和介紹

前言

本文主要面向Maven的初學者,介紹了何為Maven以及Maven的簡單用法。更加詳細的用法可以檢視文章底部的連結。

1 Maven簡介

1.1 何為Maven

Maven是Apache組織開發的一個開源的跨平臺的專案管理工具,主要服務基於java平臺的專案構建、依賴管理和專案資訊管理。無論是小型的開源類庫專案,還是大型的企業級應用;無論是傳統的瀑布式開發,還是流行的敏捷模式,Maven都能大顯身手。

1.1 為什麼使用Maven

我們在軟體開發的過程中會發現,除了編寫原始碼,我們每天有相當一部分時間花在編譯,執行單元測試,生成文件,打包和部署等瑣碎且不起眼的工作上,這就是構建。如果我們手工這樣做,那時間成本太高了,因此大家開始用軟體的方法讓這些工作自動化。Maven的用途之一就是用於構建,它是一個強大的構建工具,可以幫我們自動化構建過程,從清理、編譯、測試到生成報告,再到打包和部署。我們不用一遍一遍的輸入命令,一次次點選滑鼠。我們只要用Maven配置好專案,然後輸入簡單的命令(如mvn clean install),Maven會幫我們處理那些繁瑣的任務。除此之外,Maven還有一個優點,在Maven之前,不同專案可能有不同的構建方式,但是有了Maven之後,所有專案的構建命令都是簡單一致的,這能幫助我們標準化構建過程,避免了不必要的學習成本,有利於專案團隊的標準化。

Maven除了是一個構建工具,還是一個依賴管理工具和專案資訊管理工具。它提供了中央倉庫,能幫我們自動下載構件。在現在的軟體發開過程中,不可避免會用到第三方的開源類庫,這些類庫都可以通過依賴的方式引入到專案中。隨著依賴的增多,版本不一致、版本衝突、依賴臃腫的方式接踵而來。手動解決這些問題是十分麻煩和枯燥的,幸運的是Maven能通過一個座標系統準確的定位每一個構件,讓類庫變得更有秩序。

Maven還有很多優點,更多詳細資訊可以參考文章底部的連結。

 

2 Maven的安裝和配置(只包括windows的安裝)

2.1 檢查JDK安裝

在windows命令列中輸入%JAVA_HOME%和java -version,檢查環境變數JAVA_HOME是否指向正確的JDK目錄,以及安裝的JDK版本。

2.2 安裝和配置Maven

到Maven官網(http://maven.apache.org/download.cgi)下載Maven的安裝包,並將壓縮包解壓到目錄中(我的Maven安裝目錄是D:\maven\apache-maven-3.5.4),接著將Maven安裝配置到系統環境中。方法類似JDK的環境配置,建立一個變數名為%M2_HOME%,變數值為Maven的安裝目錄。再到path的變數,在變數值末尾加入%M2_HOME%\bin。至此,環境變數就設定完成了。可以在命令列輸入echo %M2_HOME%和mvn -v檢測安裝配置是否成功。

 

3 Maven入門

到現在為止,我們可以開始使用Maven了,在此之前,我們要先建立一個Maven專案(具體流程可以參考:https://blog.csdn.net/chenzz2560/article/details/83270232

3.1 編寫POM

Maven的核心檔案是pom.xml,POM定義了專案的基本資訊,用於描述專案如何構建,宣告專案依賴,等等。

<?xml version="1.0" encoding="UTF-8"?>

<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>aaa</groupId>
  <artifactId>aaa</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>projectName</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

第一行是XML頭,指定了該xml檔案的版本和編碼方式。接著是project元素,這是所有pom.xml的根元素,聲明瞭一些POM相關的名稱空間及xsd元素,雖然這些屬性不是必須的,但是用這些屬效能讓第三方工具幫助我們快速編譯POM。

根元素下的第一個子元素modelVersion只動了當前POM模型的版本,對於Maven2及Maven3來說,只能是4.0.0.

這段程式碼中最重要的是包含groupId,artifactId和version的三行。這三個元素定義了一個專案的基本座標。在Maven中,任何的jar,pom,或者war都是以基於這些基本座標來區分的。

 

https://download.csdn.net/download/chenzz2560/10576310