章十五、Maven —— Maven 簡介、Maven 開發環境搭建、命令、打包案例

一、?Maven 簡介


????????Maven 是 Apache 軟件基金會的一個開源項目,是一個優秀的項目構建工具,它用來幫助開發者管理項目中的 jar,以及 jar 之間的依賴關系(在A.jar文件中用到了B.jar)、完成項目的編譯(.java -> .class)、測試、打包(源代碼 -> .jar文件)和發布等工作。

? pom(Project Object Model) 項目對象模型

Maven 管理的項目的根目錄下都有一個 pom.xml 文件。

pom.xml 文件指示 Maven 如何工作。

在 pom.xml 文件中配置項目基本信息以及項目構建信息等。比如:項目坐標、項目依賴的 jar、插件、編譯選項等。

一旦在 pom.xml 文件中配置了所依賴的 jar,Maven 會自動從構件倉庫中下載相應的構件。

? 坐標

Maven 給每個 jar 定義了唯一的標志,這個在 Maven 中叫做項目的坐標,通過這個坐標可以找到你需要用到的任何版本的 jar 包。

groupId、artifactId、packaging、version 的組合被稱為項目的坐標,它們形成了項目的唯一標識,Maven 通過坐標來精確定位構件。其中 groupId、artifactId、version 是必須的,且這三項的值必須唯一,packaging 是可選的(默認為 jar)。

? 倉庫

中央倉庫全球共享,先將 jar 從中央倉庫下載到本地倉庫,然后在項目中引用本地倉庫的 jar

二、 Maven 開發環境搭建


●? 前提

1、安裝 jdk

2、Maven 工作時需要通過網絡下載各種插件以完成任務,因此應保證網絡的通暢。

3、下載 Maven 服務器:官網

點擊Download?

點擊下載二進制的?apache-maven -3.9.6-bin.zip (演示以apache-maven -3.6.0-bin.zip 為示)

4、解壓,配置系統環境變量(path)

5、配置成功后在 cmd中 輸入命令mvn -version 查看版本如下圖:

表示 Maven 環境配置成功。

6、配置本地倉庫地址

新建一個名叫?localRepository 文件夾,用于存放jar文件的目錄

在 Maven 的服務器解壓的文件中找到 conf 文件夾下的 settings.xml 文件進行修改,如下圖所示:

7、配飾阿里云Maven鏡像倉庫,下載更快

再往下,找到<mirrors>,將下面這段話粘進去

<mirror>
<id>aliMaven </id>
<name>aliyun Maven </name>
<url>http://Maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

8、在IDEA中設置Maven

打開IDEA,File -> Settings ->Build,Execution,Deployment -> Maven

這里修改3項:

第一項是Maven的安裝目錄,就是bin的上級目錄

第二項先把Override勾選,然后選擇配置文件為剛才修改的?conf 文件夾下的 settings.xml 文件

第三項也把Override勾選,然后選擇地址為剛才創建的?localRepository 文件夾

然后Apply ,OK

? 創建Maven工程

next

Finish

等待下載相應的配置文件即可

? maven 工程的組成

? pom.xml 配置

可以看到,pom.xml 文件中包含著項目的基本信息,但其中并沒有指定編譯時的JDK版本

<properties>

<maven.compiler.source>1.8</maven.compiler.source> <!-- 設置 Java 源代碼兼容性 -->

<maven.compiler.target>1.8</maven.compiler.target> <!-- 設置編譯的目標 JVM 版本 -->

</properties>

?將上面這段復制到pom.xml 中,點擊右上角的刷新

? 配置項目依賴的 jar坐標

以MySQL為例

<dependencies>

<!--mysql-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.16</version>

</dependency>

</dependencies>

刷新,之后等待自動下載

Maven 倉庫官網:

https://mvnrepository.com/

在此官網就可以下載自己所需開發 jar 包

例:(以下載fileupload為例)

搜索

點擊

?在下面找到使用人數最多的,點擊1.3.1版本

將下面Maven內的代碼粘貼到 pom.xml文件中的配置依賴程序塊

刷新,等待下載

三、 Maven命令


Maven 常用命令

1. clean 刪除編譯的 target

2. compile 編譯

3. package 打包

四、 打包 javaSE 項目案例


? 如何給已經創建的工程添加 Maven

右鍵工程,,選擇 Add Framework Support ...?

下滑,找到Maven,OK

?成功

記得設置 JDK 版本

?●? 添加打包依賴

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><!--給 jar 包起的別名--><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><!--添加項目中主類--><mainClass>com.ffyc.chatrom.client.frame.Run</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>

將上面的粘到 pom.xml 文件中,然后按照啟動類所在的位置,將項目主類中的路徑添加到mainClass中,刷新

? 打包

clean --- compile --- package,然后會生成兩個 .jar 文件,選下面那個

將文件可以復制到桌面上,隨便重命名一下,然后雙擊運行

或者實際上更應該通過cmd命令窗口運行

java -jar server.jar

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

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

相關文章

Compose Button移除水波紋效果

一、背景 在使用Compose實現Button按鈕時&#xff0c;設計要求移除按鈕的水波紋效果&#xff0c;只保留按壓效果&#xff0c;經查Compose1.4.3版本中&#xff0c;并沒有直接移除水波紋的能力 二、遇到問題 經過多次嘗試&#xff0c;使用Compose的Button組件始終無法實現目標效…

html通過數據改變,圖片跟著改變

改變前 改變后 通過數據來控制樣式展示 <template><div>通過num控制圖標是否更改{{num}}<div class"box"><!-- 如果num大于1則是另一種&#xff0c;樣式&#xff0c;如果小時1&#xff0c;則是另一種樣式 --><div class"item&qu…

android怎么告訴系統不要回收

在Android中&#xff0c;如果你想告訴系統不要回收你的應用程序&#xff0c;可以通過設置Activity的屬性來實現。你可以設置android:configChanges屬性&#xff0c;指定在哪些配置更改時不重新創建Activity。 例如&#xff0c;如果你想指示系統在屏幕方向更改時不要重新創建Ac…

又是一知識點

1.說一下什么是mvvm模式 Model代表數據模型&#xff0c;數據和業務邏輯都在Model層中定義&#xff1b;View代表UI視圖&#xff0c;負責數據的展示&#xff1b;ViewModel負責監聽Model中數據的改變并且控制視圖的更新&#xff0c;處理用戶交互操作&#xff1b; View 的變化會自…

小阿軒yx-Shell 編程之循環語句與函數

小阿軒yx-Shell 編程之循環語句與函數 for 循環語句 可以很好地解決順序編寫異常煩瑣、困難重重的全部代碼 &#xff08;&#xff09;{}&#xff1a;里邊寫的都是命令 &#xff09;&#xff1a;不能嵌套 $&#xff08;&#xff09;&#xff1a;可以嵌套&#xff0c;適合更…

day42 62.不同路徑 63. 不同路徑 II

62.不同路徑 思路 機器人從(0 , 0) 位置出發&#xff0c;到(m - 1, n - 1)終點。 按照動規五部曲來分析&#xff1a; 1.確定dp數組&#xff08;dp table&#xff09;以及下標的含義 dp[i][j] &#xff1a;表示從&#xff08;0 &#xff0c;0&#xff09;出發&#xff0c;…

2-Django項目進階--繼續學生管理系統

目錄 項目框架: urls.py views.py modules.py class_data.html add_and_modify.html add_stu.html 筆記: 繼承語法 模板繼承總結&#xff1a; 班級添加 add_and_modify.html 修改添加公用一個頁面即可 views.py 班級修改 views.py url.py 班級刪除 views.py…

boost asio異步服務器(2)實現偽閉包延長連接生命周期

閉包 在函數內部實現一個子函數&#xff0c;子函數的作用域內能訪問外部函數的局部變量。閉包就是能夠讀取其他函數內部變量。但是由于閉包會使得函數中的變量都被保存在內存中&#xff0c;內存消耗很大&#xff0c;所以不能濫用閉包&#xff0c;否則會造成程的性能問題&#x…

構造器--5.28

不用一個個屬性賦值的方法&#xff1a; 知道了類的創建與使用&#xff0c;但是每次賦值都是一個個調用&#xff0c;我們可以用構造器使得方法簡單一點&#xff0c;不用一個個調用屬性賦值&#xff0c;直接傳參就OK了&#xff1b; 點擊類名然后ctrl可以查看構造器 public yanxi…

C++完成特色旅游管理信息系統

背景&#xff1a; 繼C完成淄博燒烤節管理系統后&#xff0c;我們來到了特色旅游管理信息系統的代碼編寫&#xff0c;歷史鏈接點下方。 C完成淄博燒烤節管理系統_淄博燒烤總賬管理系統的-CSDN博客 問題描述&#xff1a; 為了更好的管理各個服務小組&#xff0c;開發相應的管…

民國漫畫雜志《時代漫畫》第30期.PDF

時代漫畫30.PDF: https://url03.ctfile.com/f/1779803-1248635414-87c8c8?p9586 (訪問密碼: 9586) 《時代漫畫》的雜志在1934年誕生了&#xff0c;截止1937年6月戰爭來臨被迫停刊共發行了39期。 ps: 資源來源網絡!

webpack打包配置項

webpack打包配置項 在config.js 中 module.exports {publicPath: process.env.NODE_ENV production ? / : /, //靜態資源目錄outputDir: dist, //打包名稱assetsDir: static,//靜態資源&#xff0c;目錄devServer: {port: port,open: false,overlay: {warnings: false,erro…

SpringBoot自動裝配源碼

自動裝配&#xff1a; 實際上就是如何將Bean自動化裝載到IOC容器中管理&#xff0c;Springboot 的自動裝配時通過SPI 的方式來實現的 SPI&#xff1a;SpringBoot 定義的一套接口規范&#xff0c;這套規范規定&#xff1a;Springboot 在啟動時會掃描外部引用 jar 包中的META-IN…

css 漸變色邊框

效果圖&#xff1a; 代碼&#xff1a; <style>:root{--br-radius: 12px;}.list{position: relative;}.list_tle{margin-top: 15px;margin-bottom: 5px;}.item{position: relative;display: inline-flex;} .br1 {padding: 10px 16px;clip-path: inset(0 round 6px);borde…

官宣|HelpLook現已入駐釘釘應用市場,助力企業知識管理知識

前一陣子OpenAI公司最新的GPT-4o技術震撼發布&#xff0c;人工智能的實際應用前景再次引起行業矚目&#xff0c;或者被GPT4o的數據分析等特色功能折服。如您正尋求將AI技術融入企業知識管理&#xff0c;不要錯過HelpLook&#xff01;HelpLook AI知識庫已經正式入駐釘釘應用市場…

Flutter 中的 SlideTransition 小部件:全面指南

Flutter 中的 SlideTransition 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;SlideTransition 是一個動畫組件&#xff0c;用于創建滑動動畫效果&#xff0c;使得子組件可以沿著一個軸滑動進入或滑動退出視圖。這種動畫效果常用于頁面轉場、菜單展開收起、元素的添加…

2024-5-8——給植物澆水

2024-5-8 題目來源我的題解方法一 模擬 題目來源 力扣每日一題&#xff1b;題序&#xff1a;2079 我的題解 方法一 模擬 依次模擬澆水動作 使用一個變量 cap維護剩余的水量&#xff0c;使用t作為還未澆水的樹的下標。當從第 i?1株植物到達第 i株植物時&#xff1a; 如果 ca…

前端中css穿透樣式:deep的用法

在前端開發中&#xff0c;尤其是使用 Vue.js 這樣的框架時&#xff0c;有時我們需要在子組件中修改或影響由父組件傳遞下來的樣式。然而&#xff0c;由于組件的封裝和樣式隔離&#xff0c;直接修改子組件中的樣式可能不起作用。這時&#xff0c;我們可以使用 ::v-deep 偽元素來…

基于Android的家庭理財APP的設計與實現(論文+源碼)_kaic

摘 要 隨著我國居民收入和生活水平的提高&#xff0c;家庭理財成為人們熱議的焦點問題。在需求分析階段&#xff0c;系統從用戶的實際需求出發&#xff0c;確定了用戶賬戶管理、記賬、數據分析和提醒功能等幾個核心需求。用戶賬戶管理包括用戶注冊、登錄和密碼找回等基本操作…

【4th chapter】信息安全技術—安全技術、安全架構、安全策略、安全管理、軟件的脆弱性

概要 安全技術安全架構安全策略安全管理軟件的脆弱性加密技術&#xff08;Encryption Technology&#xff09;安全域架構&#xff08;Security Domain Architecture&#xff09;訪問控制策略&#xff08;Access Control Policy&#xff09;信息安全管理體系&#xff08;Inform…