滿滿的 maven 乾貨,你確定不來看看嗎?

前言

無論你是剛剛接觸 maven 的新手,還是熟練掌握 maven 的大神,相信都能在博主的這篇博客中有所收穫。

maven 的作用

仍然記得我在剛剛開始學習 java ,需要引入外部依賴的時候,在網絡上到處去尋找 jar 包,那份無奈感直到現在依然刻在我的腦海裏。不過,自從瞭解到 maven 這個工具,我再也沒有尋找 jar 包的黑歷史了。因爲,maven 可以對項目中的 jar 包依賴進行統一管理啊!這個也是 maven 最大的用途了。

如果在項目中我們不使用 maven 或與之功能相似的工具,在項目中的依賴便需要我們手動下載,十分的麻煩;但是當我們使用 maven 構建項目時,maven 爲項目提供的 pom 文件可以對項目中所有的依賴進行統一管理,項目中需要的依賴在 pom 文件中直接引入即可,因爲 maven 會自動從遠程倉庫中下載 jar 包到本地倉庫。

什麼是 maven?

在大家瞭解 maven 的功能之後,我們也是時候給 maven 下一個定義了。

maven 是一個項目管理工具,它具有較高的可重用性,僅僅幾行 maven 構建腳本就可以構建簡單的項目。maven 中多個項目共享一個本地倉庫,每個項目的 jar 包都依賴於此,而且需要的依賴需要在 pom 文件中進行指定。

常用的 maven 命令

maven 的命令數其實並不少,我們這裏挑選幾個常用的來講解一下,畢竟把全部的 maven 命令列舉在這裏大家也是過眼雲煙對不對,不如記住幾個常用的更有價值。(全部的 maven 命令,博主哪會啊!)

那麼哪幾個 maven 命令算常見呢?在 idea 中可以直接使用的這幾個 maven 命令,可能是各位程序員大神在工作中會經常用到的。

在這裏插入圖片描述

  1. mvn clean:會對項目進行清理,刪除 target 目錄下編譯的內容
  2. mvn validate:驗證工程是否正確,所有需要的資源是否可用
  3. mvn compile:編譯項目代碼
  4. mvn test:運行單元測試
  5. mvn package:打包項目
  6. mvn verify:運行任何檢查,驗證包是否有效
  7. mvn install:打包後將其安裝在本地倉庫
  8. mvn site:生成站點目錄
  9. mvn deploy:打包後將其安裝到 pom 文件中配置的遠程倉庫

pom 文件的一個示例

我們前面說過,pom 文件可以對項目中所有的依賴進行統一管理,項目中需要的依賴在 pom 文件中直接引入即可。那麼,什麼是 pom 文件呢,又或者說,pom 文件長啥樣呢?下面我們來一起看看一個 Spring Boot 項目的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>ok</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>ok</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  1. modelVersion:模型版本
  2. groupId:公司或者組織的唯一標誌,配置時生成的路徑也是由此生成
  3. artifactId:本項目的唯一 ID,一個 groupId 下可能有多個項目,其依靠 artifactId 進行區分
  4. version:本項目當前的版本號
  5. packaging:打包機制
  6. properties:定義一些常量,在 pom 中的其它地方可以直接引用
  7. dependencies:定義本項目的依賴關係
  8. dependency:每一個 dependency 對應一個 jar 包
  9. scope:域,包括 compile(編譯範圍)、provided(已提供範圍)、runtime(運行時範圍)、test(測試範圍)、system(系統範圍)
  10. exclusions:屏蔽依賴關係
  11. plugins:插件

總結一下,pom 文件包含 maven 項目的依賴關係,打包機制及一些項目的詳細信息,它也可以稱得上是 maven 中最重要的文件了。

三種項目打包方式

三種方式分別爲 pom 打包,jar 打包和 war 打包,其中打包方式需要在 pom.xml 中進行指定。

  1. pom:聚合工程,即父工程,做統一的依賴管理,例如管理 jar 包的版本等
  2. jar:最常規的打包方式,可以是 pom 工程的子工程
  3. war:web 工程,即可以在 tomcat 中直接運行的工程

參考:maven的用法和幾個常用的命令

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