Maven配置(pom.xml)

Maven 教程
Maven 是一個項目管理工具,可以對 Java 項目進(jìn)行構(gòu)建、依賴管理。

1. maven中的坐標(biāo)和倉庫

1.1 坐標(biāo)

maven中構(gòu)件通過坐標(biāo)作為其唯一標(biāo)識

<dependency>
                <!---相當(dāng)于一個坐標(biāo)--->
        <groupId>com.hongshun.maven01</groupId> <!--推薦:公司網(wǎng)站反寫+項目名  -->
        <artifactId>maven01-model</artifactId> <!--推薦:項目名-模塊名  -->
        <version>0.0.1SNAPSHOT</version>
 </dependency>

1.2 倉庫

  • 本地倉庫:運(yùn)行 Maven 的時候,Maven 所需要的任何構(gòu)件都是直接從本地倉庫獲取的。如果本地倉庫沒有,它會首先嘗試從遠(yuǎn)程倉庫下載構(gòu)件至本地倉庫,然后再使用本地倉庫的構(gòu)件。

  • 中央倉庫:Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫,其中包含了大量常用的庫。

  • 遠(yuǎn)程倉庫:如果 Maven 在中央倉庫中也找不到依賴的文件,它會停止構(gòu)建過程并輸出錯誤信息到控制臺。為避免這種情況,Maven 提供了遠(yuǎn)程倉庫的概念,它是開發(fā)人員自己定制倉庫,包含了所需要的代碼庫或者其他工程中用到的 jar 文件。

  • 鏡像倉庫:Maven 倉庫默認(rèn)在國外, 國內(nèi)使用難免很慢,我們可以更換為阿里云的倉庫。

2. Pom.xml解析

pom常見元素介紹:

  • project
  • modelVersion 指定當(dāng)前pom的版本
  • groupId 推薦:公司網(wǎng)站反寫+項目名
  • artifactId 推薦:項目名-模塊名
  • version 大版本號.分支版本號.小版本號 (snapshot快照,alpha內(nèi)部測試,beta公測,release穩(wěn)定)
  • packaging
  • name :項目描述名
  • url: 項目地址
  • description
  • developers
  • license
<?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">
    <!-- 指定當(dāng)前pom的版本 -->
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.hongshun.maven02</groupId>
    <artifactId>maven02-maven</artifactId>
    <!--
      大版本號.分支版本號.小版本號
      snapshot快照
      alpha內(nèi)部測試
      beta公測
      release穩(wěn)定
      GA正式發(fā)布
    -->
    <version>0.0.1SNAPSHOT</version>
    <!--
       打包方式,默認(rèn)是jar
        war zip pom
    -->
    <packaging></packaging>

    <dependencies>
        <dependency>
            <groupId></groupId>
            <artifactId ></artifactId >
            <version><version>
            <!-- 可選 -->
            <type></type>
            <scope>test</scope>
            <!--設(shè)置依賴是否可選-->
            <optional></optional>
            <!--排除依賴傳遞列表-->
            <exclusions></exclusions>
        </dependency>
    </dependencies>
    
   <!---項目描述名-->
    <name></name>
    <!-- 項目地址 -->
    <url></url>
    <!-- 項目描述 -->
    <description></description>
    <developers></developers>
    <licenses></licenses>
    <organization></organization>
</project>

3. maven常用的構(gòu)建命令

  • mvn -v 查看maven版本
  • compile 編譯
  • test 測試
  • package 打包
  • clean 刪除target
  • install 安裝jar包到本地倉庫中 ,(以便其他文件利用<dependency></dependency>引入)

mvn compile編譯的過程中,發(fā)現(xiàn)import就會到pom.xml文件中查找是否有該包的坐標(biāo)。如果本地倉庫中有,直接引入。如果沒有,就會去網(wǎng)上maven的中央倉庫中查找。

4. Maven生命周期

4.1 生命周期

Maven 有以下三個標(biāo)準(zhǔn)的生命周期:

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

4.2 clean 清理項目

  • pre-clean 執(zhí)行清理前的工作
  • clean 清理上一次構(gòu)建生成的文件
  • post-clean 執(zhí)行清理后的文件

4.3 build構(gòu)建項目

compile、test、package、install

4.4 site 生成項目站點

  • pre-site 在生成項目站點前要完成的工作
  • site 生成項目的站點文檔
  • post-site 在生成項目站點后要完成的工作
  • site-deploy 發(fā)布生成的站點到服務(wù)器上

5. Maven插件(待進(jìn)一步整理)

每個生命周期中都包含著一系列的階段(phase)。這些 phase 就相當(dāng)于 Maven 提供的統(tǒng)一的接口,然后這些 phase 的實現(xiàn)由 Maven 的插件來完成。我們在輸入 mvn 命令的時候 比如 mvn clean,clean 對應(yīng)的就是 Clean 生命周期中的 clean 階段。但是 clean 的具體操作是由 maven-clean-plugin 來實現(xiàn)的。所以說 Maven 生命周期的每一個階段的具體實現(xiàn)都是由 Maven 插件實現(xiàn)的。

maven自動創(chuàng)建目錄骨架

Maven 提倡使用一個共同的標(biāo)準(zhǔn)目錄結(jié)構(gòu),Maven 使用約定優(yōu)于配置的原則。只需要按照約定的目錄建立項目即可。

創(chuàng)建目錄的兩種方式:

  1. archetype:generate 按照提示進(jìn)行選擇
  2. archetype:generate -DgroupId = 組織名(公司網(wǎng)站反寫+項目名) -DartifactId=項目名-模塊名 -Dversion=版本號 -Dpackage=代碼所存在的包

依賴

依賴范圍

依賴傳遞

依賴沖突

聚合和繼承

Maven [ERROR] 不再支持源選項 5。請使用 6 或更高版本

在pom.xml中加入本地jdk的版本:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>10</maven.compiler.source>
    <maven.compiler.target>10</maven.compiler.target>
</properties>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容