Maven架構的依賴管理和項目構建

??????什么是依賴管理

第三方依賴包的管理,可以連接互聯網下載項目所需第三方jar包。

自己開發的模塊的管理,可以像引用第三方依賴包一樣引用自己項目的依賴包。

Maven的依賴管理方式和傳統方式有什么區別

傳統方式:從官網手動下載jar包,并拷貝到項目的lib目錄下

maven:maven的遠程倉庫自動連接本地倉庫,并通過用戶編寫的pom.xml文件獲取目標jar包的坐標(引入依賴)

什么是項目構建

項目構建是一個從編寫源代碼到編譯、測試、運行、打包、部署的過程

傳統項目和maven項目構建的區別

傳統項目:

打開Idea編寫源代碼配置文件,對源代碼進行編譯,可以使用Junit?進行單元測試,把項目打成war包,部署到Tomcat服務器中運行。

maven項目:

maven將項目構建過程進行標準化每個階段都可以使用一個命令來完成。

清理 --> 編譯 --> 測試 --> 報告 --> 打包 --> 部署

使用maven項目構建的好處

可以通過命令完成項目構建。(測試:使用mvn tomcat:run的命令來發布運行項目)

maven對每個構建階段進行規范,有利于大型團隊協作開發

示例

一:

1、按照約定創建Maven項目目錄(總文件夾命名為hello)
  • src/main/java —— 存放項目的.java文件?
  • src/main/resources —— 存放項目資源文件,如spring, mybatis配置文件?
  • src/test/java —— 存放所有測試.java文件,如JUnit測試類?
  • src/test/resources —— 測試資源文件?
  • target —— 項目輸出位置?
  • pom.xml

創建后的樣式如圖:

2、在項目Hello根目錄建立pom.xml并添加內容
<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>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><name>Hello</name><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency>		</dependencies>
</project>
3、創建Hello.java文件

在src/main/java/cn/tx/maven目錄下新建文件Hello.java并添加內容

注意文件夾名字不要錯

package cn.tx.maven;
public class Hello {public String sayHello(String name){return "Hello "+name+"!";}
}

4、創建HelloTest.java文件

在/src/test/java/cn/tx/maven目錄下新建測試文件HelloTest.java

注意文件夾名字不要錯

package cn.tx.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {@Testpublic void testHello(){Hello hello = new Hello();String results = hello.sayHello("maven");assertEquals("Hello maven!",results);		}
}

5、進行maven的項目操作

  1. 打開cmd命令行,進入Hello項目根目錄執行 mvn compile命令,查看根目錄變化
  2. cmd 中繼續錄入mvn clean命令,然后再次查看根目錄變化
  3. cmd 中錄入 mvn clean compile命令, 查看根目錄變化
  4. cmd 中錄入 mvn clean test命令,查看根目錄變化
  5. cmd 中錄入 mvn clean package命令,查看根目錄變化
  6. cmd 中錄入 mvn clean install 查看倉庫會把項目安裝到倉庫里

結果如圖:

1.

此時根目錄下的target文件夾中應會出現

2.

3.

4.文件根目錄應暫無變化

5.內容應和4相同

6.可以看到target目錄下新添jar包

二:

1、按照約定創建Maven項目目錄

創建方式同上,且該項目依賴示例一

HelloFriend

?--src

?-----main

?----------java

?----------resources

?-----test

?---------java

?---------resources

?--pom.xml

2、在項目HelloFriend根目錄建立pom.xml
<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>cn.tx.maven</groupId><artifactId>HelloFriend</artifactId><version>0.0.1-SNAPSHOT</version><name>HelloFriend</name><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency>		<dependency><groupId>cn.tx.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope></dependency>		</dependencies>
</project>
3、創建HelloFriend.java文件

在src/main/java/cn/tx/maven目錄下新建文件HelloFriend.java

package cn.tx.maven;
import cn.tx.maven.Hello;
public class HelloFriend {public String sayHelloToFriend(String name){Hello hello = new Hello();String str = hello.sayHello(name)+" I am "+this.getMyName();System.out.println(str);return str;}public String getMyName(){return "John";}
}
4、創建HelloFriendTest.java文件

在/src/test/java/cn/tx/maven目錄下新建測試文件HelloFriendTest.java

package cn.tx.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import cn.tx.maven.Hello;
public class HelloFriendTest {@Testpublic void tesHelloFriend(){HelloFriend helloFriend = new HelloFriend();String results = helloFriend.sayHelloToFriend("zhangsan");assertEquals("Hello zhangsan! I am John",results);		}
}
5、測試打包HelloFriend項目

在HelloFriend目錄下執行命令mvn package

此時會出現系統報錯

系統報錯提示:Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT,表示無法找到HelloFriend所依賴的Hello 0.0.1-SNAPSHOT.jar

故此我們需要重新構建第一個項目Hello并安裝到數據倉庫,在命令行Hello根目錄下執行mvn clean install

對Hello項目進行清理并安裝后,對HelloFriend項目再次進行打包

可以看到本次打包成功,說明HelloFriend項目已經可以加載Hello項目所打包的jar包

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

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

相關文章

微信小程序開發(一):使用開發者工具創建天氣預報項目

Hi&#xff0c;我是前端人類學&#xff08;之前叫布蘭妮甜&#xff09;&#xff01; 從今天開始&#xff0c;我將開啟一個全新的微信小程序開發系列教程&#xff0c;通過實際項目帶大家系統學習小程序開發。作為系列的第一篇文章&#xff0c;我們將從最基礎的環境搭建開始&…

【鏈表 - LeetCode】24. 兩兩交換鏈表中的節點

24. 兩兩交換鏈表中的節點 - 力扣&#xff08;LeetCode&#xff09; 題解&#xff1a; - 迭代 首先是直接遍歷的做法&#xff0c;這里注意調整指針指向的順序。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* List…

爬蟲基礎學習-鏈接協議分析,熟悉相關函數

1、urlparse&#xff1a;&#xff08;python標準庫中的一個模塊&#xff0c;解析和操作url&#xff09;標準的url鏈接格式&#xff1a;scheme://netloc/path;params?query#fragmentscheme&#xff08;協議&#xff09; http or https netloc&#xff08;網絡位置&#xff09; …

kkfileview預覽Excel文件去掉左上角的跳轉HTML預覽、打印按鈕

上篇說了使用nginx代理kkfile預覽文件&#xff0c;但是又發現個新問題&#xff0c;預覽其他文件時都正常&#xff0c;但是預覽.xlsx格式的時候&#xff0c;在左上角會有【跳轉HTML預覽】【打印】兩個按鈕&#xff0c;如下所示&#xff1a;這篇就來說一下如何去掉。首先這個跟kk…

阿里開源新AI code工具:qoder功能介紹

下載地址&#xff1a; https://qoder.com/ 文檔地址&#xff1a; https://docs.qoder.com/ 文章目錄1. AI 編碼發展趨勢2. 真實世界軟件開發的挑戰3. 我們的方法3.1. 透明度3.1.1. 知識可見性3.1.2. 執行透明度3.2. 增強上下文工程3.3. 規范驅動與任務委托3.3.1. 聊天模式&…

什么是短視頻矩陣系統企業立項功能源碼開發,支持OEM

短視頻矩陣系統企業立項功能源碼開發解析在短視頻行業蓬勃發展的當下&#xff0c;企業紛紛布局短視頻矩陣&#xff0c;以實現多平臺、多賬號的協同運營。而企業立項作為短視頻矩陣項目啟動的關鍵環節&#xff0c;其高效、規范的管理直接影響項目的推進效率與成果。為此&#xf…

當GitHub宕機時,我們如何協作?

問題背景與影響 GitHub作為主流代碼托管平臺的依賴現狀宕機對分布式團隊、CI/CD流水線、緊急修復的影響案例其他類似平臺&#xff08;GitLab、Bitbucket&#xff09;的潛在連帶風險 本地與離線協作方案 利用Git分布式特性&#xff1a;本地倉庫繼續提交&#xff0c;恢復后同步搭…

【會議跟蹤】Model-Based Systems Engineering (MBSE) in Practice 2025

會議主旨與議題 會議宣傳鏈接:https://www.sei.cmu.edu/events/mbse-in-practice/ 本次會議將于2025年8月21日位美國弗吉尼亞州阿靈頓(五角大樓所在地)舉行。本次會議主旨為 MBSE in Practice: Bridging the Gap Between Theory and Success(2025)。隨著軟件定義系統日趨…

瀏覽器的渲染流程:從 HTML 到屏幕顯示

在我們日常使用瀏覽器瀏覽網頁時&#xff0c;往往忽略了瀏覽器背后復雜的渲染過程。從輸入 URL 到頁面最終顯示在屏幕上&#xff0c;瀏覽器需要經過一系列精心設計的步驟。 瀏覽器渲染的整體流程瀏覽器的渲染流程可以大致分為兩個主要部分&#xff1a;網絡 和 渲染。當用戶在地…

FastMCP 客戶端服務器通信示例:從入門到實戰(STDIO 傳輸)

引言 在現代分布式系統和AI應用中&#xff0c;模型上下文協議&#xff08;MCP&#xff09;扮演著重要角色&#xff0c;它負責協調客戶端與服務器之間的通信&#xff0c;尤其是在需要頻繁交互的場景中。本文將介紹如何使用FastMCP庫快速實現客戶端與服務器之間的通信&#xff0c…

寶可夢肉鴿 PC/手機雙端 多種存檔 全閃光 無限金幣 全寶可夢解鎖 免安裝中文版

網盤鏈接&#xff1a; 寶可夢肉鴿 免安裝中文版 名稱&#xff1a;寶可夢肉鴿 PC/手機雙端 多種存檔 全閃光 無限金幣 全寶可夢解鎖 免安裝中文版 描述&#xff1a;寶可夢肉鴿修改版是一款非常受歡迎的口袋妖怪系列&#xff0c;游戲擁有許多獨特的妖怪和玩法。在游戲中&#…

Linux 下的網絡編程

1、目的實現不同主機上進程間的通信。2、問題主機與主機之間在物理層面必須互聯互通。進程與進程在軟件層面必須互聯互通。IP地址&#xff1a;計算機的軟件地址&#xff0c;用來標識計算機設備。MAC地址&#xff1a;計算機的硬件地址&#xff08;固定&#xff09;。網絡的端口號…

Go語言在邊緣計算中的網絡編程實踐:從入門到精通

一、引言 在數字化浪潮席卷全球的今天&#xff0c;邊緣計算如同一股清流&#xff0c;正在重新定義我們對網絡架構的理解。想象一下&#xff0c;當你在自動駕駛汽車中需要毫秒級響應&#xff0c;或者在偏遠工廠中需要實時處理傳感器數據時&#xff0c;傳統的云計算模式就像是&qu…

ASPICE過程能力確定——度量框架

&#x1f697;【汽車人必看】ASPICE能力評估核心&#xff1a;度量框架全解析&#xff5c;90%工程師都搞不懂的評分規則&#xff01;&#x1f50d; 為什么你的ASPICE評估總卡在L2&#xff1f;——揭秘6大能力等級背后的評分邏輯&#xff0c;附提升秘籍&#xff01;&#x1f525;…

機器學習在量化中的應用

一、核心應用場景在因子研究中&#xff0c;scikit-learn 主要解決以下幾類問題&#xff1a;因子預處理與標準化&#xff1a;StandardScaler, RobustScaler因子有效性分析&#xff1a;LinearRegression (IC分析)降維與因子合成&#xff1a;PCA, FactorAnalysis機器學習預測模型&…

RabbitMQ:消息轉化器

目錄一、基本概述二、如何處理一、基本概述 在RabbitMQ中&#xff0c;一般情況下傳遞字符串會被正常解析&#xff0c;如果傳遞的是一個Object類型或者是一個對象類型的時候&#xff0c;RabbitMQ會將其自動轉化為字節碼發送&#xff0c;這不利于我們的讀取個解析。 二、如何處…

【Protues仿真】基于AT89C52單片機的LCD液晶顯示屏顯示控制

目錄 1 LM016L液晶顯示模塊 1.1 基本參數 1.2 引腳定義 1.3硬件連接示例&#xff08;AT89C52&#xff09; 1.4 常用指令集&#xff08;HD44780 子集&#xff09; 1.5 常見問題與注意事項 1.8 結論 2 LM016L液晶顯示模塊控制電路原理圖 3 LM016L液晶顯示模塊控制程序 …

孤獨傷感視頻素材哪里找?分享熱門傷感短視頻素材資源網站

你是不是也經常在抖音上刷到很火的傷感視頻&#xff0c;那么傷感視頻素材都在哪里可以下載呢&#xff1f;作為一名從業多年的視頻剪輯師&#xff0c;今天就跟大家聊聊那些可以下載傷感素材高清無水印的網站&#xff0c;如果你也在苦苦找尋傷感素材&#xff0c;快來看看吧&#…

筆記本怎么才能更快散熱?

一、“物理降溫法”??? 墊高高&#xff01;別讓底部 “窒息”?筆記本底部全是進風口&#xff0c;放床上 / 沙發上會被堵住&#xff01;墊點東西拉開底部空間&#xff0c;高度 1-2cm。??? 給風扇 “松綁”?按「CtrlShiftEsc」打開任務管理器&#xff0c;點 “進程”&…

電機驅動實現插補算法之脈沖和方向接收(以stm32主控為例)

一、方案 A&#xff08;推薦&#xff09;&#xff1a;編碼器模式吃脈沖&#xff08;TI1 STEP&#xff0c;TI2 DIR&#xff09; 核心思路 把定時器設為 Encoder TI1 模式&#xff1a;每個 STEP 上升沿計一次&#xff0c;在那個沿的瞬間用 TI2&#xff08;DIR&#xff09;的電…