Maven下載與配置對Java項目的理解

目錄

一、背景

二、JAVA項目與Maven的關系

2.1標準java項目

2.2 maven

2.2.1?下載maven

1、下載

2、配置環境

2.2.2?setting.xml

1、配置settings.xml

2、IDEA配置maven


一、背景

在java項目中,新手小白很有可能看不懂整體的目錄結構,以及每個文件都是用來干嘛的。而且經常會遇到這種場景:配置settings.xml ,依賴沖突等,依賴下載失敗,搞得大家焦頭亂額,這些場景都和maven息息相關。

二、JAVA項目與Maven的關系

2.1標準java項目

一個標準的 Java 項目通常由以下目錄和文件組成,并使用 Maven 進行依賴管理和構建:

項目根目錄/
├── pom.xml                    # 項目配置文件
├── src/
│   ├── main/
│   │   ├── java/             # 主代碼
│   │   └── resources/        # 主資源文件
│   └── test/
│       ├── java/             # 測試代碼
│       └── resources/        # 測試資源文件
└── target/                   # 編譯輸出目錄

(1)target

  • Maven 構建后自動生成的目錄,包含:
    • classes/?→ 編譯后的?.class?文件
    • test-classes/?→ 測試代碼編譯后的?.class?文件
    • my-java-project-1.0.0.jar?→ 打包后的 JAR 文件(如果是 Web 項目,可能是?.war

(2)pom.xml

  • Maven 的核心配置文件,Maven 會根據?pom.xml?自動處理依賴和構建流程。
    • 項目基本信息(groupId,?artifactId,?version):定義項目名稱(artifactId)、組織(groupId)、版本(version)等
    • 依賴(dependencies):聲明項目所需的第三方庫(如 Spring、JUnit),Maven 會自動下載并管理依賴。
    • 構建方式(build):指定源碼目錄、編譯選項、打包方式(JAR/WAR)等。
    • 插件(plugins):配置 Maven 插件(如編譯器插件、測試插件、打包插件)。

2.2 maven

Maven是Java項目的構建管理工具,類似于前端的npm、Python的pip,主要用于:

  • 依賴管理?- 自動下載和管理第三方庫
  • 項目構建?- 編譯、測試、打包
  • 項目結構標準化?- 統一的目錄結構

2.2.1?下載maven

1、下載

maven3的下載地址:Index of /dist/maven/maven-3(可以選自己需要的版本)

我是在這個網址下載3.8.3:

Index of /dist/maven/maven-3/3.8.3/binaries

將包放入指定目錄并解壓:

tar -zxvf apache-maven-3.6.3-bin.tar.gz

我建在這個目錄下:/Users/yanhan/Documents/yanhan/maven,按照自己的需求放maven位置

2、配置環境

vim ~/.bash_profile

export MAVEN_HOME=/Users/yanhan/Documents/yanhan/maven/apache-maven-3.6.3/bi    n                                                                          export PATH=$PATH:$MAVEN_HOME/bin
export PATH=$MAVEN_HOME:$PATH

保存后輸入指令激活

source ~/.bash_profile

安裝成功,并查看

mvn -v   
echo $MAVEN_HOME

成功

2.2.2?setting.xml

settings.xml 是 Maven 的核心配置文件之一,用于定義 全局或用戶級別的 Maven 運行環境,包括倉庫地址、代理服務器、認證信息等。它不直接參與項目構建,而是為 Maven 工具本身提供配置支持。

1、配置settings.xml
  1. 找到 settings.xml 文件,位置應該在:${MAVEN_HOME}/conf/settings.xml
  2. MAVEN_HOME 是 Maven 的安裝目錄(例如:/usr/local/apache-maven-3.8.6 或 C:\Program Files\apache-maven-3.8.6)。
  3. 直接替換即可

配置好settings.xml后,IDEA的maven并不是我們配置好的這個,需要再給IDEA配置下maven

2、IDEA配置maven
  1. 3號紅框修改為前面我們配置好的setting的位置,以及maven的homepath
  2. local repository按照個人的需求自行替換,不換也ok

2.2.3 常用指令

常用指令精簡表:

命令作用
mvn clean清理?target/?目錄
mvn compile編譯?src/main/java?代碼
mvn test運行?src/test/java?測試
mvn package打包(生成 JAR/WAR)
mvn install打包并安裝到本地 Maven 倉庫
mvn deploy發布到遠程倉庫(如 Nexus)

(1)基本指令

1. 清理和編譯
mvn clean                    # 清理target目錄
mvn compile                  # 編譯主代碼 (src/main/)
mvn test-compile            # 編譯測試代碼 (src/test/)
mvn clean compile           # 清理后編譯2. 測試相關
mvn test                    # 運行所有測試
mvn test -Dtest=TestClass   # 運行指定測試類
mvn test -Dgroups=P0        # 運行指定分組的測試
mvn test -DskipTests        # 跳過測試3. 打包和安裝
mvn package                 # 打包成JAR/WAR
mvn install                 # 安裝到本地倉庫
mvn deploy                  # 部署到遠程倉庫

(2)日常開發可能涉及

# 1. 項目初始化
mvn clean compile                    # 編譯項目,檢查語法錯誤# 2. 運行測試
mvn test                            # 運行所有測試
mvn test -pl tsp_group_api          # 只運行指定模塊的測試
mvn test -Dtest=TestV1Groupbuy      # 運行指定測試類# 3. 環境切換
mvn test -Ptest                     # 使用test環境配置
mvn test -Pprod                     # 使用prod環境配置# 4. 分組測試
mvn test -Dgroups=P0                # 運行P0級別測試
mvn test -Dgroups=OFFLINE           # 運行離線測試
mvn test -Dgroups="P0,OFFLINE"      # 運行多個分組

(3)調試和排錯

# 詳細輸出
mvn test -X                         # 顯示詳細調試信息
mvn test -e                         # 顯示錯誤堆棧# 依賴分析
mvn dependency:tree                 # 查看依賴樹
mvn dependency:analyze              # 分析依賴問題# 跳過測試
mvn package -DskipTests             # 打包時跳過測試
mvn install -Dmaven.test.skip=true  # 完全跳過測試編譯和執行

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

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

相關文章

Mars3d的走廊只能在一個平面的無法折疊的解決方案

問題場景:1. Mars3d的CorridorEntity只能在一個平面修改高度值,無法根據坐標點位制作有高度值的走廊效果,想要做大蜀山盤山走廊的效果實現不了。解決方案:1.使用原生cesium實現對應的走廊的截面形狀、走廊的坐標點,包括…

LeetCode 每日一題 2025/7/7-2025/7/13

記錄了初步解題思路 以及本地實現代碼;并不一定為最優 也希望大家能一起探討 一起進步 目錄7/7 1353. 最多可以參加的會議數目7/8 1751. 最多可以參加的會議數目 II7/9 3439. 重新安排會議得到最多空余時間 I7/10 3440. 重新安排會議得到最多空余時間 II7/11 3169. …

Bash常見條件語句和循環語句

以下是 Bash 中常用的條件語句和循環語句分類及語法說明,附帶典型用例:一、條件語句 1. if 語句 作用:根據條件執行不同代碼塊 語法: if [ 條件 ]; then# 條件為真時執行 elif [ 其他條件 ]; then# 其他條件為真時執行 else# 所有…

uni-app 選擇國家區號

uni-app選擇國家區號組件 hy-countryPicker 我們在做登錄注冊功能的時候,可能會遇到選擇區號來使用不同國家手機號來登錄或者注冊的功能。這里我就介紹下我這個uni-app中使用的選擇區號的組件,包含不同國家國旗圖標。 效果圖 別的不說,先來…

客戶端主機宕機,服務端如何處理 TCP 連接?詳解

文章目錄一、客戶端主機宕機后迅速重啟1、服務端有數據發送2、服務端開啟「保活」機制3、服務端既沒有數據發送,也沒有開啟「保活」機制二、客戶端主機宕機后一直沒有重啟1、服務端有數據發送2、服務端開啟「保活」機制3、服務端既沒有數據發送,也沒有開…

《大數據技術原理與應用》實驗報告五 熟悉 Hive 的基本操作

目 錄 一、實驗目的 二、實驗環境 三、數據集 四、實驗內容與完成情況 4.1 創建一個內部表 stocks,字段分隔符為英文逗號,表結構下所示。 4.2 創建一個外部分區表 dividends(分區字段為 exchange 和symbol),字段…

【橘子分布式】Thrift RPC(編程篇)

一、簡介 之前我們研究了一下thrift的一些知識,我們知道他是一個rpc框架,他作為rpc自然是提供了客戶端到服務端的訪問以及兩端數據傳輸的消息序列化,消息的協議解析和傳輸,所以我們今天就來了解一下他是如何實現這些功能&#xff…

清理C盤--辦法

c盤經常爆紅1、命令行2、屬性3、臨時文件

Java-71 深入淺出 RPC Dubbo 上手 父工程配置編寫 附詳細POM與代碼

點一下關注吧!!!非常感謝!!持續更新!!! 🚀 AI篇持續更新中!(長期更新) AI煉丹日志-29 - 字節跳動 DeerFlow 深度研究框斜體樣式架 私有…

創客匠人:創始人 IP 打造的內核,藏在有效的精神成長里

當創始人 IP 成為企業增長的重要引擎,許多人急于尋找 “爆款公式”,卻忽略了一個更本質的問題:IP 的生命力,終究源于創始人的精神成長。創客匠人在深耕知識付費賽道的過程中,見證了無數案例:那些能持續實現…

GPT和MBR分區

GPT(GUID分區表)和MBR(主引導記錄)是兩種不同的磁盤分區表格式,用于定義硬盤上分區的布局、位置及啟動信息,二者在設計、功能和適用場景上有顯著差異。以下從多個維度詳細對比: 一、核心定義與起…

c#進階之數據結構(字符串篇)----String

1、String介紹首先我們得明白,string和String代表的實際上是同一個類型,string是C#中的關鍵字,代表String類型,因此我們直接來學習String類型。從官方的底層實現代碼可以看出,當前String類型實際上就是一個Char類型的聚…

快速排序遞歸和非遞歸方法的簡單介紹

基本思想為:任取待排序元素序列中 的某元素作為基準值,按照該排序碼將待排序集合分割成兩子序列,左子序列中所有元素均小于基準值,右 子序列中所有元素均大于基準值,然后最左右子序列重復該過程,直到所有元…

從零開始的云計算生活——第三十二天,四面楚歌,HAProxy負載均衡

目錄 一.HAProxy簡介 二.HAProxy特點和優點: 三.HAProxy保持會話的三種解決方法 四.HAProxy的balance 8種負載均衡算法 1)RR(Round Robin) 2)LC(Least Connections) 3)SH&am…

策略模式及優化

策略模式(Strategy Pattern)是一種行為設計模式,其核心思想是將算法的定義與使用分離,使算法可以獨立于客戶端進行變化。它通過定義一系列算法,將每個算法封裝到獨立的類中,并使它們可以互相替換&#xff0…

微信小程序開發-桌面端和移動端UI表現不一致問題記錄

桌面端和移動端UI表現不一致零、引擎說明一、樣式不同1、text 單行:1.1 空格開發者工具不展示,手機/PC端正常1.2 正常展示省略號,需要2、點擊按鈕z-index: -1。webview - 桌面端不行, skyline - 移動端可以;3、其他說明…

極限狀態下函數開根號的計算理解(含示意圖)

遇到一個挺有意思的題做個記錄: 求曲線y (x21)(x2?1)0.5\frac{\left(x^{2}1\right)}{\left(x^{2}-1\right)^{0.5}}(x2?1)0.5(x21)?漸近線的條數 比較明顯的x 1是無定義點。但是在求極限的時候發現1和1-得到的極限值似乎不一樣。似乎是1是趨向于∞,1…

C++——模版(函數模版和類模版)

C 模板(Templates)完整介紹模板是 C 中一種強大的泛型編程機制,允許開發者編寫與類型無關的代碼,從而提高代碼的復用性和靈活性。通過模板,可以避免為不同數據類型重復編寫相似的函數或類,實現真正的代碼復…

Python之cv2:cv2(OpenCV,opencv-python)庫pip下載超時、下載失敗、無法下載的解決方案大全

Python之cv2:cv2(OpenCV,opencv-python)庫pip下載超時、下載失敗、無法下載的解決方案大全 在學習和使用 OpenCV(Python 包名:opencv-python 或簡稱 cv2)的過程中,很多初學者常常會遇到通過 pip install o…

asyncio 與 uvloop

事件循環 事件循環 協調所有協程執行的中央調度器,它通過非阻塞機制,實現并發執行多個異步任務。 事件循環是 異步編程的核心機制,用一句話概括就是: 事件循環不斷檢查任務隊列,一旦某個異步任務完成,它…