從0開始用Maven

来源:https://www.cnblogs.com/sillyfox/archive/2023/12/04/17873319.html
-Advertisement-
Play Games

一.Maven的介紹即相關概念 Maven是一款構建和管理Java項目的工具,它將項目開發和管理過程抽象成一個項目對象模型(POM),提供了一種統一的項目結構。 Maven官網 1.為什麼使用Maven/Maven的作用 (1)多模塊支持:當項目非常龐大的時候,就不適合使用package來劃分模塊, ...


一.Maven的介紹即相關概念

Maven是一款構建和管理Java項目的工具,它將項目開發和管理過程抽象成一個項目對象模型(POM),提供了一種統一的項目結構。

Maven官網

1.為什麼使用Maven/Maven的作用

(1)多模塊支持:當項目非常龐大的時候,就不適合使用package來劃分模塊,Maven允許將一個大型項目分解為多個模塊或子項目,每個模塊可以獨立進行構建,測試和發佈。這種模塊化的結構可以更好地組織和管理複雜項目,提高代碼的重用性和可維護性。

(2)構建自動化:Maven提供了一套標準的構建生命周期和插件機制,可以自動完成項目的編譯,測試,打包,部署等常見任務。通過配置 Maven 插件,可以輕鬆地執行各種構建和部署操作,避免了手動執行複雜的命令或腳本。

(3)依賴管理:Maven 使用一個中央倉庫和標準的依賴描述文件(POM)來管理項目的依賴關係。它能夠自動下載、安裝和更新項目的依賴項,簡化了項目的管理和構建過程。這樣可以減少手動維護依賴的工作,同時確保項目使用的依賴版本一致且可追蹤。

(4)項目結構標準化:Maven 強制約定一種標準的項目結構,將源代碼、資源文件、配置文件等按照約定的目錄結構組織起來。這種標準化的項目結構使得項目更易於維護、構建和部署,並且可以減少團隊成員之間的學習成本。

2.Maven的坐標

什麼是坐標?:Maven坐標是資源的唯一標識,通過該坐標可以唯一定位資源位置。使用坐標定義項目或引入項目中需要的依賴

Maven坐標的組成(三個部分):

  • groupld:定義當前Maven項目組織名稱(通常功能變數名稱反寫)
  • artifactld:定義當前Maven項目名稱(通常是模塊名稱,例如order-server)
  • version:定義當前項目版本號

二.Maven的安裝

《Maven的安裝與配置本地倉庫,鏡像源,環境變數》

三.IDEA編譯器配置Maven環境

1.在IDEA的單個工程中配置Maven環境

只在一個項目工程中使用maven,則按以下步驟配置

1.創建一個空項目(new project)

2.設置項目關聯的JDK(建議使用JDK11版本,為企業主流版本)

3.配置Maven,本地倉庫會自動載入

4.指定maven的settings配置文件位置

5.選擇JRE版本

6.指定當前項目的位元組碼版本

點擊Apply,ok選項完成配置

2.方式2:配置Maven全局參數

需要在任何項目工程中使用maven,則按以下步驟配置

1.File-close project

2.打開配置頁面

3.配置Maven,本地倉庫會自動載入

4.指定maven的settings配置文件位置

5.選擇JRE版本

6.指定當前項目的位元組碼版本

點擊Apply,ok選項完成配置

四.IDEA編譯器創建Maven項目

1.File-new-moudle

2.創建Maven項目

3.輸入Maven項目的信息

之後等待IDEA中將Maven的依賴下載完成,持續時間大概2分鐘左右

五.IDEA中的Maven項目結構

當用戶創建代碼並編譯允許後,會出現一個target文件夾,用來存放位元組碼文件:

六.IDEA編譯器導入Maven項目

1.選擇右側的Maven菜單欄上的“+“號

2.選擇Maven項目src文件夾下的pom.xml文件即可導入

七.Maven的依賴管理

依賴是什麼?:指當前項目運行所需要的jar包,一個項目中可以引入多個依賴。即項目所依賴的外部庫、框架或模塊,它們是項目開發過程中需要用到的代碼資源,通過引入這些依賴,可以獲得所需的功能和特性。

Maven的依賴具有傳遞性:當被依賴的資源依賴其他資源時,當前項目會自動引入它所依賴的資源,即會間接依賴

1.依賴配置

maven的依賴配置通過在pox.xml文件中修改代碼進行配置,配置步驟:

  • 在pom.xml中編寫標簽
  • 標簽中使用引入坐標(maven要配置的信息)
  • 定義坐標的groupld,artifactld,version
  • 點擊刷新按鈕,引入最新加入的坐標
    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

註意依賴配置代碼要寫在結束標簽的前面

如果你輸入的依賴無法找到,即在你寫入依賴配置代碼後編譯器報錯無法找到你配置的依賴,選擇刷新maven會自動下載依賴

當右側的Maven菜單欄出現以下信息則表示maven依賴配置成功

2.如何查找依賴的坐標信息?

如果IDEA編譯器沒有軟體提示你依賴的信息,並且你不知道依賴的坐標信息,可以到https://mvnrepository.com網站中搜索,可以直接複製配置該依賴所需要的代碼

1.搜索需要的依賴

2.點擊搜索到的依賴,進入頁面查看信息

3.點擊想要使用依賴的版本號

4.划到頁面底部位置,複製該依賴代碼到pom.xml中

2.如何排除依賴

由於Maven依賴具有傳遞性,當被依賴的資源依賴其他資源時,當前項目會自動引入它所依賴的資源,即會間接依賴。如果不需要依賴資源所依賴的其他資源,可以通過在pom.xml文件編寫exclusion代碼排除不想要的依賴

    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>


            <exclusions>
              <exclusion>
                <groupId>ch.qos.logback</groupId>       //想要排除的依賴,被排除依賴無需指定版本
                <artifactId>logback-classic</artifactId>  
              <exclusion>
            </exclusions>

        </dependency>
    </dependencies>

註意:exclusions代碼塊要寫在dependency代碼塊內,且被排除的依賴無需指定版本號version

3.依賴範圍設置

依賴的jar包預設情況下可以在任何地方使用,但用戶可以通過在pom.xml文件中編寫scope代碼設置其作用範圍

依賴的作用範圍有3種

  • 主程式範圍有效(main文件夾範圍內)
  • 測試程式範圍有效(test文件夾範圍內)
  • 是否參與打包運行(package指令範圍內)

scope的值有4種

  • compile(預設):任何位置使用依賴
  • test:只在測試程式範圍內使用依賴
  • provided:只在主程式和測試範圍內使用依賴
  • runtime:只在測試程式和打包運行時使用依賴

代碼示範

    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>

            <scope>test</scope>              //依賴範圍添加

        </dependency>
    </dependencies>

八.Maven的生命周期

什麼是Maven的生命周期?:Maven的生命周期就是為了對所有的maven項目構建過程進行抽象和統一,簡單來說就是maven所執行的各個功能步驟

Maven的生命周期的過程主要有以下幾點:

清理clean:將以前編譯得到的舊文件class位元組碼文件刪除
編譯compile:將java源程式編譯成class位元組碼文件
測試test:自動測試,自動調用junit程式
報告report:測試程式執行的結果
打包package:動態Web工程打War包,java工程打jar包
安裝install:Maven特定的概念-----將打包得到的文件複製到“倉庫”中的指定位置
部署deploy:將動態Web工程生成的war包複製到Servlet容器下,使其可以運行

在Maven菜單欄的Lifecycle下可以看到生命周期的各個過程

如何執行生命周期的階段?

方式一:直接雙擊Maven菜單欄中生命周期的步驟

方式二:通過cmd命令行中命令執行(註意要在maven項目的當前目錄下打開cmd

mvn clean
mvn compile
mvn package
mvn test
mvn report
mvn package
mvn install
mvn deploy

一些相關內容的參考學習資源

參考視頻:
黑馬程式員2023新版JavaWeb開發教程,實現javaweb企業開發全流程
【小飛非系列】最新Maven實戰教程-項目實戰構建利器


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 測試發現了一個問題,簡單描述問題就是通過函數刪除一個數組中多個元素,傳入的參數是一個數組索引。 然後發現實際效果有時刪除的不是想要的內容。 具體 Bug 代碼實現: const arr = [1,2,3,4,5,6,7]; cons ...
  • 本文先介紹了 wasm-pack 官方的教程,還有其他組件測試、發佈等的流程先不在這裡介紹了。以下用一個實際開發中的模塊來說一下開發 wasm 組件過程中遇到的問題和解決方法。 ...
  • 小程式上想要實現成點擊標簽跳轉某標簽,在標簽內滾動時隨著超過滾動內容 tab 選中態變化。 藉助了 @vant/weapp 框架 index.wxml <view class="list-page"> <van-tabs sticky active="{{ active }}" bind:click ...
  • 註意:在模擬器用滑鼠滾動是不會切換游標的,因為使用的是觸摸滑動。【自定義類型貼在最後了】 script 部分如下: import { onMounted } from 'vue' import type { orderDetail } from '@/types/category' import t ...
  • 最近有個需求需要實現自定義首頁佈局,需要將屏幕按照 6 列 4 行進行等分成多個格子,然後將組件可拖拽對應格子進行渲染展示。 示例 對比一些已有的插件,發現想要實現產品的交互效果,沒有現成可用的。本身功能並不是太過複雜,於是決定自己基於 vue 手擼一個簡易的 Grid 拖拽佈局。 完整源碼在此,在 ...
  • 2.7Python(目前ArcGIS使用)代碼轉化為3.5Python(目前ArcGIS Pro使用)代碼 Analyze Tools For Pro (2to3命令) 基本操作 調用ArcToolbox的兩種形式 #arcpy.ToolboxAlias.ToolName() #arcpy.Tool ...
  • 我們有時候也會看到一些博客看到或者聽到一些同事在說:這個業務有什麼難的,不就是CRUD麽?在軟體生命周期初期,我們通過CRUD這種方式我們可以快速的實現業務規則,交付項目,但隨著業務逐漸複雜,通過CRUD這種粗暴方式不可避免地會淹沒業務核心規則,產生很多祖傳(屎山)代碼,系統交接的時候我們經常會聽到... ...
  • 結構化查詢語言,簡稱SQL,它是與關係資料庫管理系統通信的黃金標準語言。今天就來一起快速認識一下什麼是SQL,您可以通過以下的文字內容學習,也可以通過文末的視頻學習,希望本文對您有所幫助。 您可能聽說過 MySQL、Postgres、Microsoft SQL Server 和 Oracle 等數據 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...