初識maven

Maven是什麼?


Maven是一個項目管理和綜合工具。Maven提供了開發人員構建一個完整的生命週期框架。開發團隊能夠自動完成項目的基礎工具建設,Maven使用標準的目錄結構和默認構建生命週期。 咱們常常用的就是jar包的管理。html

 

Maven POM


POM( Project Object Model,項目對象模型 ) 是 Maven 工程的基本工做單元,是一個XML文件,包含了項目的基本信息,用於描述項目如何構建,聲明項目依賴,等等。apache

在建立 POM 以前,咱們首先須要描述項目組 (groupId), 項目的惟一ID。mybatis

<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>
    <packaging>jar</packaging>
</project>

全部 POM 文件都須要 project 元素和三個必需字段:groupId,artifactId,version。框架

 

節點 描述
project 工程的根標籤。
modelVersion 模型版本須要設置爲 4.0。
groupId 這是工程組的標識。它在一個組織或者項目中一般是惟一的。例如,一個銀行組織 com.companyname.project-group 擁有全部的和銀行相關的項目。
artifactId 這是工程的標識。它一般是工程的名稱。例如,消費者銀行。groupId 和 artifactId 一塊兒定義了 artifact 在倉庫中的位置。
version

這是工程的版本號。在 artifact 的倉庫中,它用來區分不一樣的版本。例如:yii

com.company.bank:consumer-banking:1.0
com.company.bank:consumer-banking:1.1
packaging 項目打包的類型,可使jar、war、rar、ear、pom,默認是jar

 

dependencies和dependencymaven

  前者包含後者。前面說了,Maven的一個重要做用就是統一管理jar包,爲了一個項目能夠build或運行,項目中不可避免的,會依賴不少其餘的jar包,在Maven中,這些依賴就被稱爲dependency。工具

  說到這裏,就有一個本地倉庫和遠程倉庫的概念了。本地倉庫和遠程倉庫是這樣的,Maven工程首先會從本地倉庫中獲取jar包,當沒法獲取指定jar包時,本地倉庫會從遠程倉庫(中央倉庫)中下載jar包,並放入本地倉庫以備未來使用。本次倉庫路徑:c:\用戶\{找到計算機用戶}\.m2。遠程倉庫默認使用的是http://repo2.maven.org/maven2/,可是咱們也能夠修改。單元測試

 

  舉個例子,比方說個人項目中用到了MyBatis,那麼pom能夠添加這段配置:測試

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.5</version>
    </dependency>
</dependencies>

 

點擊ctrl+s保存,Eclipse就會自動到遠程倉庫裏下載mybatis的jar包到本地倉庫,經過groupId、artifactId、version惟一標識一個Maven項目,有了這三個元素,咱們就能夠去遠程倉庫下載,若是本地倉庫裏已經有該jar包了,則不會到遠程倉庫下載。ui

properties


properties是用來定義一些配置屬性的,例如project.build.sourceEncoding(項目構建源碼編碼方式),能夠設置爲UTF-8,防止中文亂碼,也可定義相關構建版本號,便於往後統一升級。經過${}能夠在dependency引用該模塊定義的屬性。

<properties>
    <mybatis.version>3.2.5</mybatis.version>
  </properties>
  <dependencies>
    <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>${mybatis.version}</version>
      </dependency>
    </dependencies> 

 

如上代碼,咱們在properties中定義了一個mybatis.version的屬性,而後再下面的version裏面就能夠引用該屬性了。

遠程倉庫修改


<repositories>
    <repository>
        <id>Dcm4Che</id>
        <name>Dcm4Che</name>
        <url>http://www.dcm4che.org/maven2/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

 

 

標籤的含義以下:

  • id maven倉庫的id(自定義)

  • name maven倉庫的名稱(自定義)

  • url maven倉庫的url(能夠替換爲阿里的鏡像倉庫:http://maven.aliyun.com/nexus/content/groups/public/,能夠是本身搭建的maven私服)

  • releases maven倉庫中版本爲release的包

  • snapshots maven倉庫中版本爲snapshots的包

Maven 構建生命週期


一個典型的 Maven 構建(build)生命週期是由如下幾個階段的序列組成的:

階段 處理 描述
驗證 validate 驗證項目 驗證項目是否正確且全部必須信息是可用的
編譯 compile 執行編譯 源代碼編譯在此階段完成
測試 Test 測試 使用適當的單元測試框架(例如JUnit)運行測試。
包裝 package 打包 建立JAR/WAR包如在 pom.xml 中定義說起的包
檢查 verify 檢查 對集成測試的結果進行檢查,以保證質量達標
安裝 install 安裝 安裝打包的項目到本地倉庫,以供其餘項目使用
部署 deploy 部署 拷貝最終的工程包到遠程倉庫中,以共享給其餘開發人員和工程

經常使用的maven命令以下:

1. 編譯源代碼:

mvn compile

 

2. 運行測試:

mvn test

 

3. 打包:

mvn package

 

4.打包到本地倉庫(.m2路徑下)

mvn install

 

5.清除產生的項目(清楚target目錄文件)

mvn clean

 

6.上傳到私服

mvn deploy

 

7.組合命令

mvn clean install --清楚打包

mvn -Dtest package 跳過測試 只打包

 

文章參考

http://www.runoob.com/maven/maven-tutorial.html

https://www.yiibai.com/maven

https://www.cnblogs.com/hongwz/p/5456578.html

做者: Eric.Chen
出處: https://www.cnblogs.com/lc-chenlong
若是喜歡做者的文章,請關注「寫代碼的猿」訂閱號以便第一時間得到最新內容。本文版權歸做者全部,歡迎轉載
相關文章
相關標籤/搜索