網頁后端開發(基礎1--maven)

maven的作用:

Maven是一款管理和構建Java項目的工具。


1.依賴管理

方便快捷的管理項目依賴的資源(jar包)

? ? ? ? 不用手動下載jar包,只需要中maven中引用,maven會查找本地倉庫。若本地倉庫沒有,會直接向遠端倉庫發送下載請求,自動下載jar包。

Maven 倉庫是存放構件的地方,主要分為兩大類:本地倉庫遠程倉庫

本地倉庫

本地倉庫是存放在用戶計算機上的一個目錄,Maven 在查找構件時首先會在本地倉庫中查找。如果本地倉庫中存在所需的構件,Maven 會直接使用它們。默認情況下,本地倉庫位于用戶目錄下的?.m2/repository/?目錄中1。

遠程倉庫

如果本地倉庫中沒有找到所需的構件,Maven 會去遠程倉庫查找。遠程倉庫又可以分為三種:

  1. 中央倉庫:這是 Maven 自帶的遠程倉庫,包含了絕大部分開源的構件。當本地倉庫沒有所需的構件時,Maven 會嘗試從中央倉庫下載1。

  2. 私服:這是一個特殊的遠程倉庫,通常架設在局域網內,用來代理所有的外部遠程倉庫。私服可以節省帶寬,提高下載效率,并且便于部署第三方構件1。

  3. 其他公共倉庫:除了中央倉庫和私服外,還有很多其他公開的遠程倉庫,如 java.net Maven 庫和 JBoss Maven 庫1。

????????maven中引用示例

<!--引入依賴--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version></dependency></dependencies>

? ? ? ? 若本地倉庫沒有,則會直接從遠端倉庫下載?org.springframework的jar包。

2.項目構建:

標準的跨平臺的自動化項目構建方式(Linux,Window,MacOS)

? ? ? ? 在IDEA中創建maven文件,會自動化生成固定格式,并且附帶生存期和插件。

3.統一項目結構:

提供標準,統一的項目結構

? ? ? ? Java主流編譯軟件:Eclipse,MyEclipse,IntelliJ IDEA

? ? ? ? 這些軟件生成的Java文件格式不同,無法相互導入。

? ? ? ? 使用maven即可解決,maven提供統一的標準,不同編譯軟件之間可以相互使用。

Maven核心

????????Maven概述:Maven是項目管理和構建工具,它基于項目對象模型(POM)的概念,通過一段描述信息來管理項目的構建。

????????官網:https://mvnrepository.com/

????????Maven結構:pom.xml--->三部分:項目對象模型(POM),依賴管理模型,構建生命周期/階段。

????????項目對象模型(POM)

<?xml version="1.0" encoding="UTF-8"?>
<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>org.cyyWeb</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!--SNAPSHOT是開發中的版本--><!--Release是正式版本--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
</project>

pom由?

? ? <groupId>org.cyyWeb</groupId>
? ? <artifactId>maven-project01</artifactId>
? ? <version>1.0-SNAPSHOT</version>
?

? ? <properties>
? ? ? ? <maven.compiler.source>17</maven.compiler.source>
? ? ? ? <maven.compiler.target>17</maven.compiler.target>
? ? ? ? <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
? ? </properties>

組成。

????<groupId>org.cyyWeb</groupId>
? ? <artifactId>maven-project01</artifactId>
? ? <version>1.0-SNAPSHOT</version>

? ? 是項目的基本信息。其中

groupId是當前Maven項目隸屬的組織名稱,通常為域名反寫。

artifactId是當前Maven項目的名稱。

version用來定義當前的版本號。(SNAPSHOT是開發中的版本,Release是正式版本)

?????<properties>.........</properties>表示JDK的信息,包含JDK的版本。此實驗使用JDK17進行實驗。

????????依賴管理模型

<!--引入依賴--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version></dependency></dependencies>

? ? <dependencies>
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>..........</groupId>
? ? ? ? ? ? <artifactId>.........</artifactId>
? ? ? ? ? ? <version>.......</version>
? ? ? ? </dependency>
? ? </dependencies>

用來引入依賴,即導入jar包。本地倉庫沒有時,自動訪問遠端倉庫進行下載。

????????構建生命周期/階段

? ? ? ? 生命周期與插件緊密聯系,運行什么生命周期,調用相對應的插件。

Maven的依賴管理

依賴配置

配置

1.編寫<dependencies>? </dependencies>標簽

2.在<dependencies>? </dependencies>中,使用<dependency>? </dependency>引入坐標

3.定義坐標的<groupId>....</groupId>,<artifactId>....</artifactId>,<version>..</version>

???????groupId是引入依賴的組織名稱。

???????artifactId是引入依賴的名稱。

???????version用來定義引入依賴的版本號。

4.點擊刷新,引入最新加入的坐標。

?若不知道依賴的坐標,可以訪問官網查找。

官網:https://mvnrepository.com/

排除依賴

排除依賴:指主動斷開依賴的資源,被排除的資源無需指定版本。

在<dependency>? </dependency>中使用<exclusions>..</exclusions>排除依賴。

<?xml version="1.0" encoding="UTF-8"?>
<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>org.cyyWeb</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!--SNAPSHOT是開發中的版本--><!--Release是正式版本--><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--引入依賴--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version><!--排除依賴--><exclusions><exclusion><groupId>io.micrometer</groupId><artifactId>micrometer-observation</artifactId></exclusion></exclusions></dependency></dependencies></project>

注意事項

1.一旦依賴配置變更了,需要重新加載

2.引入的依賴本地倉庫不存在時,需要聯網在遠端倉庫進行下載。

生命周期

Maven的生命周期是為了對所有Maven項目構建過程進行抽象和統一。

Maven有三套相互獨立的生命周期:

clean:清理工作。

default:核心工作,如:編譯,測試,打包,安裝,部署等。

site:生成報告

每套生命周期都包含一些階段,階段是有順序的,后面的階段依賴于前面的階段。

在同一套生命周期中,當后面階段運行時,前面的階段也會運行。

例如:當運行install時,dsfault要從validate運行至install

執行生命周期的兩種方式:

1.在idea中,右側的maven工具欄,選擇對應的生命周期,雙擊運行。

2.在命令行中,通過命令執行。

在項目文件夾中,在上方文件目錄中輸入cmd,回車。

在命令行中輸入mvn clean,執行清理工作。

生命周期與插件:

在執行生命周期時,其本質是調用了對應的插件,完成工作。

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

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

相關文章

認識電子元器件---高低邊驅動

目錄 一、基本概念 二、關鍵參數對比 三、工作原理 &#xff08;1&#xff09;高邊驅動 &#xff08;2&#xff09;低邊驅動 四、典型的應用場景 五、如何選擇 一、基本概念 可以理解成&#xff1a;高低邊驅動是MOS/IGBT的一種應用方式 高低邊驅動是電路拓撲概念&#…

JavaScript 標簽加載

目錄 JavaScript 標簽加載script 標簽的 async 和 defer 屬性&#xff0c;分別代表什么&#xff0c;有什么區別1. 普通 script 標簽2. async 屬性3. defer 屬性4. type"module"5. 各種加載方式的對比6. 使用建議 JavaScript 標簽加載 script 標簽的 async 和 defer …

C/CPP 結構體、聯合體、位段內存計算 指南

C/CPP 結構體、聯合體、位段內存計算 指南 在C語言中&#xff0c;結構體、聯合體和位段是對數據的高級抽象&#xff0c;它們可以讓程序員以更易于理解的方式來操作復雜的數據結構。然而&#xff0c;這些結構在內存中的布局可能并不如它們的語法結構那樣直觀&#xff0c;特別是當…

ASR(語音識別)語音/字幕標注 通過via(via_subtitle_annotator)

文章目錄 1 VIA 官網資料2 語音/字幕標注3 鍵盤快捷鍵常規當一個時間片段被選中時圖像或視頻幀中的空間區域 1 VIA 官網資料 VIA官網&#xff1a;https://www.robots.ox.ac.uk/~vgg/software/via/ VIA官網標注示例&#xff1a;https://www.robots.ox.ac.uk/~vgg/software/via/…

mq安裝新版-3.13.7的安裝

一、下載包&#xff0c;上傳到服務器 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.7/rabbitmq-server-generic-unix-3.13.7.tar.xz 二、 erlang直接安裝 rpm -ivh erlang-26.2.4-1.el8.x86_64.rpm不需要配置環境變量&#xff0c;直接就安裝了。 erl…

高通平臺PCIE EP模式log丟失問題

高通平臺PCIE EP模式log丟失問題 1 問題背景2 問題分析2.1 對比USB2.1.1 Logtool優化2.1.2 Device mhi與fs對比2.2 優化方案2.2.1 Diag系統優化2.2.2 Host mhi優化3 最終成果1 問題背景 高通5G模組如SDX55\SDX62\SDX65\SDX72\SDX75等支持pcie ep模式。會通過pcie與host(如MT7…

Python應用輸入輸出函數

大家好!在 Python 編程中&#xff0c;輸入輸出函數是與用戶進行交互的橋梁。通過輸入函數&#xff0c;我們可以獲取用戶的輸入數據&#xff1b;通過輸出函數&#xff0c;我們可以向用戶展示程序的運行結果。對于初學者來說&#xff0c;掌握基本的輸入輸出操作是編程入門的重要一…

如何使用 Ansible 在 Ubuntu 24.04 上安裝和設置 LNMP

在當今世界,自動化是有效管理和部署 Web 應用程序的關鍵。Ansible 是一個強大的自動化工具,它是一款開源軟件配置、配置管理和應用程序部署工具。本文將指導您使用 Ansible 在 Ubuntu 服務器上安裝 LNMP 堆棧(Linux、Nginx、MySQL、PHP)。 先決條件 為了執行本指南中討論的…

Xela矩陣三軸觸覺傳感器的工作原理解析與應用場景

Xela矩陣三軸觸覺傳感器通過先進技術模擬人類觸覺感知&#xff0c;幫助設備實現精確的力測量與位移監測。其核心功能基于磁性三維力測量與空間位移測量&#xff0c;能夠捕捉多維觸覺信息。該傳感器的設計不僅提升了觸覺感知的精度&#xff0c;還為機器人、醫療設備和制造業的智…

RK3288項目(四)--linux內核之V4L2框架及ov9281驅動分析(中)

目錄 一、引言 二、V4L2其他部件驅動分析 ------>2.1、mipi-dphy ------------>2.1.1、dts ------------>2.1.2、driver ------------>2.1.3、notifier機制 ------------>2.1.4、異步回調 ------------>2.1.5、V4L2 subdev ------>2.2、mipi-csi…

容器-使用slim減少10x+大模型鏡像

slim&#xff08;原docker-slim&#xff09;是一個開源工具&#xff0c;全稱SlimToolkit&#xff08;https://github.com/slimtoolkit/slim&#xff09;&#xff0c;用于基于已有的Docker鏡像減小鏡像的大小&#xff0c;同時盡可能保留容器的功能。它通過分析鏡像的運行環境和應…

Golang基礎學習

?????????? 初見golang語法 go項目路徑 cd $GOPATH //ls可以看到有bin,pkg,src三個文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序執行&#xff1a; go run hello.go//如果想分兩步執行&#xff1a; go build hello.go ./hello導入包的…

OPenCV CUDA模塊圖像處理-----對圖像執行 均值漂移濾波(Mean Shift Filtering)函數meanShiftFiltering()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 在 GPU 上對圖像執行 均值漂移濾波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于圖像分割或平滑處理。 該函數將輸入圖像中的…

電路圖識圖基礎知識-遠程/本地啟停電動機(二十一)

在實際的生產中&#xff0c;經常會需要電動機的控制可以就地控制和遠方控制&#xff0c;在集中的控制室中&#xff0c;遠 方控制電動機的啟動、停止。在就地設置啟動、停止按鈕或是緊急停車按鈕&#xff0c;以滿足生產的需要。 1.遠程、多點及連鎖控制電動機電路 2.元器件配置…

SpringBoot+uniapp 的 Champion 俱樂部微信小程序設計與實現,論文初版實現

摘要 本論文旨在設計并實現基于 SpringBoot 和 uniapp 的 Champion 俱樂部微信小程序&#xff0c;以滿足俱樂部線上活動推廣、會員管理、社交互動等需求。通過 SpringBoot 搭建后端服務&#xff0c;提供穩定高效的數據處理與業務邏輯支持&#xff1b;利用 uniapp 實現跨平臺前…

【深度學習新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配問題) 是機器學習,尤其是強化學習(RL)中的核心挑戰之一,指的是如何將最終的獎勵或懲罰準確地分配給導致該結果的各個中間動作或決策。在序列決策任務中,智能體執行一系列動作后獲得一個最終獎勵,但每個動作對最終結果的貢獻程度往往…

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.

這個警告表明您在使用Vue的esm-bundler構建版本時&#xff0c;未明確定義編譯時特性標志。以下是詳細解釋和解決方案&#xff1a; ?問題原因?&#xff1a; 該標志是Vue 3.4引入的編譯時特性標志&#xff0c;用于控制生產環境下SSR水合不匹配錯誤的詳細報告1使用esm-bundler…

Vue.js教學第二十一章:vue實戰項目二,個人博客搭建

基于 Vue 的個人博客網站搭建 摘要: 隨著前端技術的不斷發展,Vue 作為一種輕量級、高效的前端框架,為個人博客網站的搭建提供了極大的便利。本文詳細介紹了基于 Vue 搭建個人博客網站的全過程,包括項目背景、技術選型、項目架構設計、功能模塊實現、性能優化與測試等方面。…

32位尋址與64位尋址

32位尋址與64位尋址 32位尋址是什么&#xff1f; 32位尋址是指計算機的CPU、內存或總線系統使用32位二進制數來標識和訪問內存中的存儲單元&#xff08;地址&#xff09;&#xff0c;其核心含義與能力如下&#xff1a; 1. 核心定義 地址位寬&#xff1a;CPU或內存控制器用32位…

如何在Spring Boot中使用注解動態切換實現

還在用冗長的if-else或switch語句管理多個服務實現? 相信不少Spring Boot開發者都遇到過這樣的場景:需要根據不同條件動態選擇不同的服務實現。 如果告訴你可以完全擺脫條件判斷,讓Spring自動選擇合適的實現——只需要一個注解,你是否感興趣? 本文將詳細介紹這種優雅的…