1. 程式人生 > >Maven 基本的認識

Maven 基本的認識

Maven 基本的認識

1. 什麼是Maven?

在平時開發中,經常遇到某個jar包,我在程式碼層已經Import 和@Automation了,編譯器還是提醒你某個jar包找不到,往往這時來個mvn install 問題就解決了。可想而知,Maven 是幫助我們開發者管理Jar包的工具

2. Maven基本命令

2.1 程式碼的編譯

 mvn compile

同樣的,這裡把專案jar程式碼編譯成.class檔案到專案的target資料夾

2.2 安裝包

mvn install 

編譯好的.class檔案,maven 自動地安裝到本地Repository,即maven 的倉庫。為什麼要安裝到倉庫,這樣的作用是什麼?

  • 方便Maven工具快速找到相關的jar 包,引入專案裡
  • 集中管理專案的jar包

2.3 清理目標檔案

mvn clean 

maven 只對專案中的target 中的檔案清理,原先的安裝的檔案不受影響。

3. Maven POM

3.1 什麼是POM?

POM代表專案物件模型。它是 Maven 中工作的基本單位,這是一個 XML 檔案。它始終儲存在該專案基本目錄中的 pom.xml 檔案。

<?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>com.lollipop.api</groupId>  
 <artifactId>ali</artifactId>  
 <version>1.0-SNAPSHOT</version>  
</project>

3.2 POM中裝包型別

  • 裝包的屬性
     <packaging></packaging>
  • 裝包型別
  1. pom 型別,所有的父級專案的packaging都為pom
  2. jar 型別,預設是jar型別,如果不作配置,maven會將該專案打成jar包,作為內部呼叫或者是作服務使用
  3. war 型別,如果是需要部署的專案,則需要打包成war型別
    每個pom.xml 檔案必需有project 、groupId、artifactId、version。
    | 元素 | 說明 |
    |:-------:|:----:|
    | project | 專案根目錄 |
    | groupId | 公司或組織域倒序+專案 |
    | artifactId | 模組名稱 |
    | version | 模組版本號 |

4. Maven 依賴

4.1依賴的範圍

4.1.1 範圍標籤
<dependencies>
   <dependency>
      <groupId>xxx.xx.x</groupId>
      <artifactId>xxx</artifactId>
      <version>4.0</version>
      <scop>xxx</scop> #範圍標籤
   </dependency>
</dependencies>
4.1.2 範圍標籤作用域值
  1. compile 範圍依賴
    • 對程式編譯和打包期,該作用域有效
  2. test 範圍依賴
    • 對測試程式編譯和執行期,該作用域有效
  3. procided 範圍依賴
    • 除打包和部署期無效後,其他期都有效

      4.2 依賴的繼承

      在專案裡,如果多個子模組需要用到同個依賴包,我們可以提取它們到父 POM,子POM僅僅簡單的引用
      父pom.xml
     hewlll

子pom.xml

  <project>
     ...
  <dependencies>
      <dependency>
          <groupId>group-c</groupId>
          <artifactId>artifact-b</artifactId>
          <!-- This is not a jar dependency, so we must specify type. -->
          <type>war</type>
      </dependency>

      <dependency>
          <groupId>group-a</groupId>
          <artifactId>artifact-b</artifactId>
          <!-- This is not a jar dependency, so we must specify type. -->
          <type>bar</type>
      </dependency>
  </dependencies>
  </project>

4.3 規範依賴版號

這裡就不詳細說明了。主要在父級pom裡頭加入版本號,子級pom簡單引入就可以了

有很多地方說的不好,可以去Maven官網看文件, 建議多動手熟悉Maven的知識