Maven詳細解

Maven 工具介紹

Maven是Apache組織下的一個跨平臺的項目管理工具,它主要用來幫助實現項目的構建、測試、打包和部署。Maven 提供了標準的軟件生命周期模型和構建模型,通過配置就能對項目進行全面的管理。它的跨平臺性保證了在不同的操作系統上可以使用相同的命令來完成相應的任務。Maven 將構建的過程抽象成一個個的生命周期過程,在不同的階段使用不同的已實現插件來完成相應的實際工作,這種設計方法極大的避免了設計和腳本編碼的重復,極大的實現了復用。

Maven 是一個基于項目對象模型(POM)的構建工具,用于 Java 項目的依賴管理、構建和生命周期管理。其主要特點包括:

  • 依賴管理:通過 pom.xml 文件自動下載和管理項目依賴。
  • 標準化項目結構:提供統一的目錄布局,便于團隊協作。
  • 構建生命周期:定義清晰的構建階段(如編譯、測試、打包、部署)。
  • 插件體系:支持通過插件擴展功能(如編譯、靜態分析等)。

Maven 下載與安裝

  1. 下載 Maven

    • 訪問 Apache Maven 官網,選擇最新穩定版本的二進制壓縮包(如 apache-maven-3.8.6-bin.zip)。
    • 解壓到本地目錄(如 C:\Program Files\apache-maven-3.8.6)。
  2. 配置環境變量

    • 添加系統變量 MAVEN_HOME,值為 Maven 解壓路徑(如 C:\Program Files\apache-maven-3.8.6)。
    • 編輯 Path 變量,追加 %MAVEN_HOME%\bin
    • 驗證安裝:命令行運行 mvn -v,輸出版本信息即表示成功。

Maven 核心配置文件

POM 即 Project Object Module,項目對象模型,在 pom.xml 文件中定義了項目的基本信息、源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目授權、項目的 url、以及構建項目所用的插件,依賴繼承關系。開發人員需按照 maven 定義的規則進行 POM 文件的編寫。
groupId 定義了項目屬于哪個組,這有助于在大的范圍上區別項目。
artifactId 定義了這個項目在組中唯一的 ID,通常是工程的名稱。
groupId 和 artifactId 一起定義了artifact 在倉庫中的位置。
version 項目版本。

  • pom.xml:項目根配置文件,包含以下關鍵部分:
    <project>  <modelVersion>4.0.0</modelVersion>  <groupId>com.example</groupId>  <!-- 組織標識 -->  <artifactId>my-project</artifactId>  <!-- 項目標識 -->  <version>1.0.0</version>  <!-- 版本號 -->  <dependencies>  <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>4.12</version>  <scope>test</scope>  </dependency>  </dependencies>  
    </project>  
    


Maven 常用命令詳解

項目生命周期命令
  1. 清理編譯輸出

    mvn clean  
    

    刪除 target 目錄及其內容。

  2. 編譯項目

    mvn compile  
    

    生成 .class 文件到 target/classes 目錄。

  3. 運行測試

    mvn test  
    

    執行 src/test/java 下的單元測試。

  4. 打包項目

    mvn package  
    

    生成 JAR/WAR 文件到 target 目錄。

  5. 安裝到本地倉庫

    mvn install  
    

    將構建的產物安裝到本地 Maven 倉庫(默認 ~/.m2/repository)。

  6. 跳過測試

    mvn install -DskipTests  
    


依賴與插件管理
  1. 手動下載依賴

    mvn dependency:resolve  
    

  2. 生成依賴樹

    mvn dependency:tree  
    

  3. 運行插件目標

    mvn archetype:generate  # 使用 archetype 插件生成項目骨架  
    


Maven 倉庫類型

  • 本地倉庫:本地磁盤上的依賴緩存目錄(默認 ~/.m2/repository)。
  • 中央倉庫:Maven 官方維護的公共倉庫(無需配置)。
  • 私服倉庫:如 Nexus、Artifactory,需在 pom.xmlsettings.xml 中配置。

配置優化建議

  1. 鏡像加速
    修改 settings.xml(位于 ~/.m2/),添加阿里云鏡像:

    <mirror>  <id>aliyun</id>  <mirrorOf>central</mirrorOf>  <url>https://maven.aliyun.com/repository/central</url>  
    </mirror>  
    

  2. 多模塊管理
    使用 <modules> 標簽在父 POM 中聚合子模塊:

    <modules>  <module>module1</module>  <module>module2</module>  
    </modules>  
    

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

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

相關文章

Springboot兒童攝影服務91f0v(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表項目功能&#xff1a;用戶,員工,攝影套餐,套餐系列,客片欣賞,攝影預約,攝影訂單,取片通知,攝影評價開題報告內容基于Spring Boot的兒童攝影服務系統設計與實現開題報告一、研究背景與意義隨著國家生育政策調整&#xff0c;兒童攝影市場需求呈現爆發式增長。以北…

vue-seo優化

一、為什么 Vue 需要專門做 SEO Vue 默認是客戶端渲染 SPA&#xff0c;首屏 HTML 幾乎為空&#xff0c;爬蟲抓取不到內容&#xff1b;即使 Googlebot 能執行 JS&#xff0c;也存在“渲染預算”與加載延遲問題 二、技術落地 4 條路線 場景技術選型實現要點適用內容更新頻…

DNS防護實戰:用ipset自動攔截異常解析與群聯AI云防護集成

問題場景 DNS服務器常成為黑客探測源IP的首選目標。攻擊者通過高頻DNS查詢獲取解析記錄&#xff0c;或利用異常請求觸發服務器響應&#xff0c;從而定位源站IP。傳統單IP攔截效率低下&#xff0c;難以應對分布式攻擊。 核心解決方案 ipset自動化攔截 ipset是iptables的擴展&…

養老院跌倒誤報頻發?陌訊時空圖卷積實現95%精準檢測

?開篇痛點??> "傳統視覺算法在養老院場景面臨三大挑戰&#xff1a; > ① 夜間低光照下識別率驟降&#xff08;<50% mAP&#xff09; > ② 多人遮擋場景姿態檢測漂移 > ③ 跌倒誤報率高達30%&#xff08;某養老機構2024年報告&#xff09;"通…

[spring6: BeanPostProcessor BeanFactoryPostProcessor]-生命周期

BeanFactoryPostProcessor BeanFactoryPostProcessor 接口允許在 Spring 容器初始化完所有的 bean 定義之后&#xff0c;但還未實例化任何 bean 時&#xff0c;修改應用上下文的內部 bean 工廠。通過實現 postProcessBeanFactory 方法&#xff0c;你可以覆蓋或添加屬性&#xf…

MISRA C-2012準則之聲明與定義

目錄 一、MISRA C簡介 二、聲明與定義 1. 必需。類型應被顯式聲明。 2. 必需。函數應以原型形式命名參數。 3. 必需。所有對象和函數的聲明需要使用完全相同的名字和參數。 4. 必需。當定義有外部鏈接的對象或函數時&#xff0c;兼容聲明應是可見的。 5. 必需。外部變量…

【blender】使用Vscode進行blender調試

配置vscodeblender 直接使用blender中的text editor沒有代碼補全&#xff0c;終端輸出通常和blender不在同一個頁面&#xff0c;只適合非常簡單的代碼測試。使用Vscode能有效提高blender調試的效率&#xff0c;具體方式見&#xff1a;VSCode 開發 Blender腳本工具配置。 調試…

Au速成班-樂理知識補充+網頁下載音樂

音質分類 通過查看音頻頻譜&#xff0c;128Kbps、192Kbps、320Kbps、無損&#xff08;Lossless HD&#xff09;CD音質&#xff08;頻率都在20kHz以上&#xff09;。 各家平臺對無損的定義不一樣&#xff0c;em各有說法吧。 無損的含義是&#xff1a;無損失的聲音格式。只要能…

JAVA中的Collection集合及ArrayList,LinkedLIst,HashSet,TreeSet和其它實現類的常用方法

文章目錄前言一、Collection 接口常用方法1.boolean add(E e)2.boolean remove(Object o)3.boolean contains(Object o)4.boolean isEmpty()5.int size()6.void clear()7.Object[] toArray()8.boolean containsAll(Collection<?> c)9.boolean addAll(Collection<? e…

有n棍棍子,棍子i的長度為ai,想要從中選出3根棍子組成周長盡可能長的三角形。請輸出最大的周長,若無法組成三角形則輸出0。

題目描述&#xff1a; 有n棍棍子&#xff0c;棍子i的長度為ai&#xff0c;想要從中選出3根棍子組成周長盡可能長的三角形。請輸出最大的周長&#xff0c;若無法組成三角形則輸出0。 算法為O(nlogn) 初始理解題目 首先&#xff0c;我們需要清楚地理解題目要求&#xff1a; 輸入…

【Echarts】 電影票房匯總實時數據橫向柱狀圖比圖

效果圖code <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>圓角柱狀圖</title><script src"https://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js"></script> </head> <…

【深度學習基礎】PyTorch中model.eval()與with torch.no_grad()以及detach的區別與聯系?

目錄1. 核心功能對比2. 使用場景對比3. 區別與聯系4. 典型代碼示例(1) 模型評估階段(2) GAN 訓練中的判別器更新(3) 提取中間特征5. 關鍵區別總結6. 常見問題與解決方案(1) 問題&#xff1a;推理階段顯存爆掉(2) 問題&#xff1a;Dropout/BatchNorm 行為異常(3) 問題&#xff1…

博客摘錄「 華為云平臺-FusionSphere OpenStack 8.2.1 系統加固」2025年7月15日

編號 加固項 "風險 等級" 加固原理/Rationale 審計方法/Audit 期望結果/Expect Results 加固方法/Remediation 1 OpenSSH加固配置 1.1 OpenSSH加固配置 1.1.1 SSH使用的版本 H "Op…

永磁同步電機MTPA與MTPV曲線具體仿真實現

永磁同步電機MTPA與MTPV曲線具體仿真實現 近期做了一些標定試驗&#xff0c;實際電機參數并不是確定的&#xff0c;而是變化的&#xff0c;因此很難通過解析的方法算出MTPA的對應點&#xff0c;以及在弱磁區如何過度到MTPV。這個在實際情況下都是一點點標出來的&#xff0c;我這…

Adobe Acrobat 插件功能、應用與開發

什么是 Acrobat 插件&#xff1f; Adobe Acrobat 插件是一種能夠擴展 Adobe Acrobat 閱讀器/查看器功能的軟件組件。Acrobat 是用于查看、創建和編輯 PDF 文檔的流行程序&#xff0c;而插件可以為其添加新功能&#xff0c;例如&#xff1a; #mermaid-svg-iqdM1wLkFQhd3ilQ {fon…

Redis學習系列之——高并發應用的緩存問題(二)

一、布隆過濾器布隆過濾器由一個 BitMap 和若干 Hash 函數組成&#xff0c;可以用來快速判斷一個值是否存在后端存儲中。它是解決 Redis 緩存穿透問題的一個不錯的解決方案。工作原理步驟1&#xff1a;當 key-value 鍵值對存儲到 Redis 后&#xff0c;向布隆過濾器添加 key步驟…

Expression 類的靜態方法

public static MethodCallExpression Call(Type type, // 包含目標方法的類型string methodName, // 方法名稱Type[]? typeArguments, // 泛型方法的類型參數&#xff08;非泛型方法為 null&#xff09;params Expression[]? arguments // 方…

[Nagios Core] 事件調度 | 檢查執行 | 插件與進程

第五章&#xff1a;事件調度 歡迎回到Nagios Core&#xff01; 在上一章第四章&#xff1a;配置加載中&#xff0c;我們了解了Nagios如何讀取配置文件以知曉需要監控的對象&#xff0c;比如我們的朋友"Web Server 1"。此時Nagios內存中已構建完整的基礎設施拓撲圖。…

Web3 常用前端庫介紹

一、Web3 前端開發&#xff1a;連接用戶與區塊鏈的橋梁 隨著 Web3 生態的蓬勃發展&#xff0c;前端開發從傳統的頁面渲染進化為區塊鏈交互的核心樞紐。Web3 前端庫作為連接用戶與區塊鏈的橋梁&#xff0c;承擔著錢包集成、合約交互、數據可視化等關鍵功能。本文將系統解析主流 …

cnpm命令報internal/modules/cjs/loader.js:797 throw err; ^ Error: Cannot find

在運行一個項目的時候&#xff0c;需要升級電腦各組件的版本&#xff0c;結果導致cnpm命令無法正常使用&#xff0c;cnpm任何命令都會報如下這個錯&#xff1a;找了半天&#xff0c;發現是由于cnpm與npm的版本不一致導致的&#xff0c;所以需要卸載并重新安裝cnpm&#xff0c;重…