【基礎知識】回頭看Maven基礎

版本日期修訂人描述
V1.02025/3/7nick huang創建文檔

背景

項目過程中,對于Maven的pom.xml文件,很多時候,我通過各種參考、仿寫,最終做出想要的效果。
但實際心里有些迷糊,不清楚具體哪個基礎的配置所實現的效果。
今天,特意回過頭來,了解Maven的基礎知識,以便以后使用起來更有條理。

最簡單的Maven項目

IntelliJ IDEA創建一個最簡單的Maven項目,可以看到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.nicchagil</groupId><artifactId>simple-idea-maven-project</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>

通過Windows的tree命令,查看整個項目的目錄結構:

└─src├─main│  ├─java│  │  └─com│  │      └─nicchagil│  └─resources└─test└─java

最簡單的pom.xml底下的內容

通過以下操作,我們可以查看上述最簡單pom.xml的「Effevtive POM」:
1、在「IntelliJ IDEA」中右鍵「pom.xml的文件內容」
2、選擇「Show Effevtive POM」

查看了「Effevtive POM」,查閱了其中部分節點的作用,并以中文加上注釋:

Tips
為了提高可讀性,以下Effevtive POM的內容會適當刪減。

<!-- Effective POM for project                                              -->
<!-- 'com.nicchagil:simple-idea-maven-project:jar:1.0-SNAPSHOT'             -->
<!--                                                                        -->
<!-- ====================================================================== --><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"><!-- 指定當前pom.xml文件所遵循的Maven項目對象模型(Project Object Model)版本 --><modelVersion>4.0.0</modelVersion><!-- 用于唯一標識一個公司(或項目、團隊等) --><groupId>com.nicchagil</groupId><!-- 與groupId和version唯一標識一個項目或模塊 --><artifactId>simple-idea-maven-project</artifactId><!-- 唯一標識項目的版本 --><version>1.0-SNAPSHOT</version><properties><!-- 指定Java源代碼所遵循的版本 --><maven.compiler.source>8</maven.compiler.source><!-- 指定Java編譯器生成的字節碼所兼容的Java虛擬機版本 --><maven.compiler.target>8</maven.compiler.target><!-- 指定源代碼文件的字符編碼 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 倉庫 --><repositories><repository><snapshots><enabled>false</enabled> <!-- 表示禁用對該倉庫中快照版本的支持 --></snapshots><id>central</id><name>Central Repository</name><url>https://repo.maven.apache.org/maven2</url> <!-- 這里配置的URL(https://repo.maven.apache.org/maven2)是Maven中央倉庫 --></repository></repositories><!-- 插件倉庫 --><pluginRepositories><pluginRepository><releases><updatePolicy>never</updatePolicy> <!-- 對于發布版本的更新策略為never,即永遠不會去檢查該倉庫中發布版本插件是否有更新 --></releases><snapshots><enabled>false</enabled> <!-- 禁用對該倉庫中快照版本插件的支持 --></snapshots><id>central</id><name>Central Repository</name><url>https://repo.maven.apache.org/maven2</url></pluginRepository></pluginRepositories><!-- 項目的構建過程 --><build><!-- 全局構建配置 --><!-- 指定項目源代碼的目錄,Maven在編譯時從此目錄獲取源代碼 --><sourceDirectory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\src\main\java</sourceDirectory><!-- 沒查到scriptSourceDirectory相應的資料 --><scriptSourceDirectory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\src\main\scripts</scriptSourceDirectory><!-- 指定項目測試代碼的目錄 --><testSourceDirectory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\src\test\java</testSourceDirectory><!-- 指定編譯后的類文件的輸出目錄 --><outputDirectory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\target\classes</outputDirectory><!-- 指定測試代碼編譯后的類文件輸出目錄 --><testOutputDirectory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\target\test-classes</testOutputDirectory><!-- 項目資源文件 --><resources><resource><directory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\src\main\resources</directory></resource></resources><!-- 項目測試相關的資源文件 --><testResources><testResource><directory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\src\test\resources</directory></testResource></testResources><!-- 構建輸出的目錄 --><directory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\target</directory><!-- 項目打包后生成的最終文件的名稱(不包含擴展名) --><finalName>simple-idea-maven-project-1.0-SNAPSHOT</finalName><!-- 對插件的版本、配置等信息進行集中管理與配置。通常位于父項目中,為子模塊提供統一的插件配置模板。此節點的配置不會直接生效,子模塊需要時顯示引用對應的插件才會生效 --><pluginManagement><plugins><!-- 用于Apache Ant任務的支持 --><plugin><artifactId>maven-antrun-plugin</artifactId><version>3.1.0</version></plugin><!-- 用于將項目的輸出和相關依賴打包成單獨分發文件,方便項目的分發和部署 --><plugin><artifactId>maven-assembly-plugin</artifactId><version>3.6.0</version></plugin><!-- 用于管理和操作項目的依賴 --><plugin><artifactId>maven-dependency-plugin</artifactId><version>3.6.1</version></plugin><!-- 用于簡化項目的發布流程 --><plugin><artifactId>maven-release-plugin</artifactId><version>3.0.1</version></plugin></plugins></pluginManagement><!-- 項目構建過程中實際要用到的插件 --><plugins><!-- 用于清理項目構建過程中生成的文件和目錄 --><plugin><artifactId>maven-clean-plugin</artifactId><version>3.2.0</version><executions><execution><id>default-clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution></executions></plugin><!-- 用于處理項目中的資源文件。主要會將資源文件復制到指定的輸出目錄,并可以對這些資源文件進行過濾等操作 --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.3.1</version><executions><execution><id>default-testResources</id><phase>process-test-resources</phase><goals><goal>testResources</goal></goals></execution><execution><id>default-resources</id><phase>process-resources</phase><goals><goal>resources</goal></goals></execution></executions></plugin><!-- 用于創建JAR(Java Archive)文件的核心插件 --><plugin><artifactId>maven-jar-plugin</artifactId><version>3.3.0</version><executions><execution><id>default-jar</id><phase>package</phase><goals><goal>jar</goal></goals></execution></executions></plugin><!-- 用于編譯Java源代碼 --><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><executions><execution><id>default-compile</id><phase>compile</phase><goals><goal>compile</goal></goals></execution><execution><id>default-testCompile</id><phase>test-compile</phase><goals><goal>testCompile</goal></goals></execution></executions></plugin><!-- 用于在項目構建過程中執行單元測試和集成測試 --><plugin><artifactId>maven-surefire-plugin</artifactId><version>3.2.2</version><executions><execution><id>default-test</id><phase>test</phase><goals><goal>test</goal></goals></execution></executions></plugin><!-- 用于將項目構建生成的產出(如JAR文件)安裝到本地Maven倉庫 --><plugin><artifactId>maven-install-plugin</artifactId><version>3.1.1</version><executions><execution><id>default-install</id><phase>install</phase><goals><goal>install</goal></goals></execution></executions></plugin><!-- 用于將項目構建的產物部署到遠程Maven倉庫 --><plugin><artifactId>maven-deploy-plugin</artifactId><version>3.1.1</version><executions><execution><id>default-deploy</id><phase>deploy</phase><goals><goal>deploy</goal></goals></execution></executions></plugin><!-- 用于生成項目的站點文檔 --><plugin><artifactId>maven-site-plugin</artifactId><version>3.12.1</version><!-- 注意:因maven-site-plugin的配置內容較多,為提高可讀性,已省略maven-site-plugin其中的配置 --><!-- maven-site-plugin的配置已省略 --></plugin></plugins></build><!-- 用于配置項目報告的生成的展示 --><reporting><outputDirectory>D:\idea_workspace\maven-test-project\simple-idea-maven-project\target\site</outputDirectory></reporting>
</project>

Maven的常用命令

通過閱讀上文的「Effevtive POM」,就容易理解我們經常使用的Maven命令,其基礎配置是對應上面的默認插件。
比如:我們使用mvn clean命令,實際起作用的是Maven的默認插件maven-clean-plugin

Maven的常用命令:

  • mvn clean:清理項目構建生成的文件和目錄
  • mvn compile:編譯項目的源代碼
  • mvn test:執行項目的測試
  • mvn package:將項目編譯后的代碼打包成可分發的格式,如JAR包
  • mvn install:將項目打包后的產物安裝到本地Maven倉庫
  • mvn deploy:將項目打包后的產物部署到遠程Maven倉庫

后續

后續,有時間再了解Maven項目關聯的幾種方式(比如:依賴、繼承、聚合),以及它們的適用場景。

最后

小弟不才,學識有限,如有錯漏,歡迎指正哈。
如果本文對你有幫助,記得“一鍵三連”(“點贊”、“評論”、“收藏”)哦!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73211.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73211.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ROS實踐(四)機器人SLAM建圖(gmapping)

目錄 一、SLAM技術 二、常用工具和傳感器 三、相關功能包 1. gmapping建圖功能包 2. map_server 四、SLAM 建圖實驗 1. 配置gmapping(launch文件) 2. 啟動機器人仿真(含機器人以及傳感器) 3. 運行gmapping節點 4. 啟動rviz可視化工具 5. 保存地圖文件 一、SLAM技…

二進制安裝指定版本的MariaDBv10.11.6

一、官網下載mariadb安裝包 Download MariaDB Server - MariaDB.org 找到對應的版本 下載安裝包后上傳到服務器這里不再贅述。 二、安裝二進制包 1、解壓安裝包 2、查看安裝包內的安裝提示文檔根據提示文檔進行安裝 # 解壓安裝包 tar xf mariadb-10.11.6-linux-systemd-x8…

【抽獎項目】|第二篇

前言&#xff1a; 高并發的活動預熱肯定不可以在數據庫操作&#xff0c;需要redis&#xff0c;特別是這種秒殺活動更是需要注意&#xff0c;所以可以在高并發的前夕先進行活動預熱。 思路&#xff1a; 1、 通過定時任務調度每分鐘查詢數據庫也沒有需要預熱的活動 2、采用分布式…

異或和之和 第十四屆藍橋杯大賽軟件賽省賽C/C++ 大學 A 組

異或和之和 題目來源 第十四屆藍橋杯大賽軟件賽省賽C/C++ 大學 A 組 原題鏈接 藍橋杯 異或和之和 https://www.lanqiao.cn/problems/3507/learning/ 問題描述 問題分析 要點1:異或運算 概念 異或(Exclusive OR,簡稱 XOR)是一種數學運算符,常用于邏輯運算與計算機…

從零到一:如何系統化封裝并發布 React 組件庫到 npm

1. 項目初始化 1.1 創建項目 首先&#xff0c;創建一個新的項目目錄并初始化 package.json 文件。 mkdir my-component-library cd my-component-library npm init -y1.2 安裝依賴 安裝開發所需的依賴項&#xff0c;如構建工具、測試框架等。 npm install --save-dev webp…

現代互聯網網絡安全與操作系統安全防御概要

現階段國與國之間不用對方路由器&#xff0c;其實是有道理的&#xff0c;路由器破了&#xff0c;內網非常好攻擊&#xff0c;內網共享開放端口也非常多&#xff0c;更容易攻擊。還有些內存系統與pe系統自帶瀏覽器都沒有javascript腳本功能&#xff0c;也是有道理的&#xff0c;…

2025-03-12 學習記錄--C/C++-PTA 習題8-4 報數

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、題目描述 ?? 習題8-4 報數 報數游戲是這樣的&#xff1a;有n個人圍成一圈&#xff0c;按順序從1到n編好號。從第一個人開…

【js逆向】某預約票網站 (webpack技術)

1、查看數據包 calendar是需要的數據包&#xff0c;看下它的請求參數。 accTimes參數加密&#xff0c;_times是時間戳。 2、全局搜索 accTimes 關鍵字 3、n的定義 4、把整個js代碼復制下來&#xff0c;應用到了webpack技術&#xff0c;圖中的Q是n

前端模塊管理新思路:如何使用 Import Maps

前言 前端開發中&#xff0c;我們常常需要使用各種庫和模塊來構建功能豐富的應用。在傳統方式中&#xff0c;管理這些庫和模塊的引用可能會有些繁瑣。 幸運的是&#xff0c;Import Maps 的出現為我們提供了一種更簡潔和高效的解決方案。今天我們就來聊聊如何使用 Import Maps。…

AI模型的構建過程是怎樣的(下)

你好,我是舒旻。 上節課,我們講了一個模型構建的前 2 個環節,模型設計和特征工程。今天,我們繼續來講模型構建的其他 3 個環節,說說模型訓練、模型驗證和模型融合中,算法工程師的具體工作內容,以及 AI 產品經理需要掌握的重點。 模型訓練 模型訓練是通過不斷訓練、驗證…

人工智能混合編程實踐:Python ONNX進行圖像超分重建

人工智能混合編程實踐:Python ONNX進行圖像超分重建 前言相關介紹Python簡介ONNX簡介圖像超分辨率重建簡介應用場景前提條件實驗環境項目結構使用Python ONNX進行圖像超分重建sr_py_infer.py參考文獻前言 由于本人水平有限,難免出現錯漏,敬請批評改正。更多精彩內容,可點擊…

視頻理解之Actionclip(論文宏觀解讀)

配合解讀代碼解讀 1.研究背景 1. 視頻行為識別的重要性 視頻行為識別是視頻理解領域的核心任務之一&#xff0c;旨在通過分析視頻內容來識別和分類其中的人物行為或活動。這一任務在多個領域具有重要的應用價值&#xff0c;例如智能監控、人機交互、自動駕駛、醫療健康等。隨…

【mysql】centOS7安裝mysql詳細操作步驟!

【mysql】centOS7安裝mysql詳細操作步驟&#xff01;—通過tar包方式 需要 root 權限&#xff0c;使用 root 用戶進行命令操作。 1. 查看 CentOS 版本 cat /etc/redhat-release2. 安裝rpm包&#xff0c;以8為例 打開 MySQL 官方 yum 倉庫網站&#xff0c;獲取與當前 CentOS …

【網絡編程】事件選擇模型

十、基于I/O模型的網絡開發 10.9 事件選擇模型 10.0.1 基本概念 事件選擇(WSAEventSelect) 模型是另一個有用的異步 I/O 模型。和 WSAAsyncSelect 模 型類似的是&#xff0c;它也允許應用程序在一個或多個套接字上接收以事件為基礎的網絡事件通知&#xff0c;最 主要的差別在…

STM32 F407ZGT6開發板

#ifndef _tftlcd_H #define _tftlcd_H #include "system.h" //定義LCD彩屏的驅動類型 可根據自己手上的彩屏背面型號來選擇打開哪種驅動 //#def…

江科大51單片機筆記【15】直流電機驅動(PWM)

寫在前言 此為博主自學江科大51單片機&#xff08;B站&#xff09;的筆記&#xff0c;方便后續重溫知識 在后面的章節中&#xff0c;為了防止篇幅過長和易于查找&#xff0c;我把一個小節分成兩部分來發&#xff0c;上章節主要是關于本節課的硬件介紹、電路圖、原理圖等理論…

鴻蒙模擬器運行NDK項目失敗 9568347

鴻蒙編譯NDK項目 模擬器運行NDK項目失敗 9568347 23:32:17.572: $ hdc file send D:\study\hongmeng\MyTestNdk\entry\build\default\outputs\default\entry-default-unsigned.hap "data/local/tmp/9fff4611338a424bb31b521bdc3555af" in 30 ms 23:32:17.651: $ hd…

uniapp+Vue3 開發小程序的下載文件功能

小程序下載文件&#xff0c;可以先預覽文件內容&#xff0c;然后在手機上打開文件的工具中選擇保存。 簡單示例&#xff1a;&#xff08;復制到HBuilder直接食用即可&#xff09; <template><view class"container-detail"><view class"example…

電機控制常見面試問題(九)

文章目錄 一、談談電機死區時間1.死區時間過短的后果&#xff1a;2.如何判斷死區時間不足?3.解決方案 二、請描述對實時操作系統&#xff08;RTOS&#xff09;的理解三.解釋FOC算法的原理并比較與其他無刷電機控制算法的優劣四.什么是電機堵轉&#xff0c;如何避免電機堵轉五.…

【分布式】聊聊分布式id實現方案和生產經驗

對于分布式Id來說&#xff0c;在面試過程中也是高頻面試題&#xff0c;所以主要針對分布式id實現方案進行詳細分析下。 應用場景 對于無論是單機還是分布式系統來說&#xff0c;對于很多場景需要全局唯一ID&#xff0c; 數據庫id唯一性日志traceId 可以方便找到日志鏈&#…