Maven必知必會

maven是什麼?

Maven是基於項目對象模型(POM project object model),可以通過一小段描述信息(配置)來管理項目的構建,報告和文檔的軟件項目管理工具[百度百科]

POM( Project Object Model,項目對象模型 ) 是 Maven 工程的基本工作單元,是一個XML文件,包含了項目的基本信息,用於描述項目如何構建,聲明項目依賴,等等。Maven的核心功能便是合理敘述項目間的依賴關係。

所有 POM 文件都需要 project 元素和三個必需字段:groupId,artifactId,version。

<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>
    <!-- 公司或者組織的唯一標誌,並且配置時生成的路徑也是由此生成, 如com.companyname.project-group,maven會將該項目打成的jar包放本地路徑:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 項目的唯一ID,一個groupId下面可能多個項目,就是靠artifactId來區分的 -->
    <artifactId>project</artifactId>
 
    <!-- 版本號 -->
    <version>1.0</version>
</project>

Maven的生命週期

Maven 有以下三個標準的生命週期:

  • clean:項目清理的處理
  • default(或 build):項目部署的處理
  • site:項目站點文檔創建的處理

每個生命週期中都包含着一系列的階段(phase)。這些 phase 就相當於 Maven 提供的統一的接口,然後這些 phase 的實現由 Maven 的插件來完成。一個典型的 Maven 構建(build)生命週期是由以下幾個階段的序列組成的:

  • 驗證 validate
  • 編譯 compile
  • 測試 Test
  • 包裝 package
  • 檢查 verify
  • 安裝 install
  • 部署 deploy

Maven 插件

我們在輸入 mvn 命令的時候 比如 mvn clean,clean 對應的就是 Clean 生命週期中的 clean 階段。但是 clean 的具體操作是由 maven-clean-plugin 來實現的。所以說 Maven 生命週期的每一個階段的具體實現都是由 Maven 插件實現的。

** 當一個階段通過 Maven 命令調用時,例如 mvn compile,只有該階段之前以及包括該階段在內的所有階段會被執行。**
不同的 maven 目標將根據打包的類型(JAR / WAR / EAR),被綁定到不同的 Maven 生命週期階段。

Maven 倉庫

Maven 倉庫能幫助我們管理構件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

Maven 倉庫有三種類型:

默認情況下,不管Linux還是 Windows,每個用戶在自己的用戶目錄下都有一個路徑名爲 .m2/respository/ 的倉庫目錄。
Maven 本地倉庫默認被創建在 %USER_HOME% 目錄下。要修改默認位置,在 %M2_HOME%\conf 目錄中的 Maven 的 settings.xml 文件中定義另一個路徑。

遠程倉庫
遠程倉庫是開發人員自己定製倉庫,包含了所需要的代碼庫或者其他工程中用到的 jar 文件。

<repositories>  
        <repository>  
            <id>alimaven</id>  
            <name>aliyun maven</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
</repository>  
</repositories>

** Maven 阿里雲(Aliyun)倉庫 **
Maven 倉庫默認在國外, 國內使用難免很慢,我們可以更換爲阿里雲的倉庫。

第一步:修改 maven 根目錄下的 conf 文件夾中的 setting.xml 文件,在 mirrors 節點上.
第二步: pom.xml文件裏添加以上內容。

Maven 環境配置
Maven 是一個基於 Java 的工具,所以要做的第一件事情就是安裝 JDK。Maven 3.3 要求 JDK 1.7 或以上。

Maven 快照(SNAPSHOT)

快照是一種特殊的版本,指定了某個當前的開發進度的副本。不同於常規的版本,Maven 每次構建都會在遠程倉庫中檢查新的快照。

Maven 的 Snapshot 版本與 Release 版本
1、Snapshot 版本代表不穩定、尚處於開發中的版本。
2、Release 版本則代表穩定的版本。

dependencies與dependencyManagement搭配使用

dependencies即使在子項目中不寫該依賴項,那麼子項目仍然會從父項目中繼承該依賴項(全部繼承)
dependencyManagement裏只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有指定具體版本,纔會從父項目中繼承該項,並且version和scope都讀取自父pom;另外如果子項目中指定了版本號,那麼會使用子項目中指定的jar版本。

Maven目錄結構

Maven默認約定了一套目錄結構,在通過Maven創建了項目以後,項目的目錄結構就是以這套目錄結構作爲模板創建的。

${basedir}
|-- pom.xml
|-- src
|   |-- main
|   |   `-- java
|   |   `-- resources
|   |   `-- filters
|   `-- test
|   |   `-- java
|   |   `-- resources
|   |   `-- filters
|   `-- it
|   `-- assembly
|   `-- site
`-- LICENSE.txt
`-- NOTICE.txt
`-- README.txt

Maven通俗講解: https://blog.csdn.net/shuzhe66/article/details/45009175
Maven 教程: http://www.runoob.com/maven/maven-tutorial.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章