Maven學習總結(禁止轉載)

来源:https://www.cnblogs.com/stevenwsx/archive/2019/12/31/12126458.html
-Advertisement-
Play Games

1. Maven綜述與拓展概念準備 Maven起源:生產環境下開發不再是一個項目一個工程,而是每一個模塊創建一個工程, 而多個模塊整合在一起就需要使用到像 Maven 這樣的構建工具。 Maven定義:一個自動化構建工具 Maven簡介:Maven是Apache軟體基金會組織維護的一款自動化構建工具 ...


 

1. Maven綜述與拓展概念準備

Maven起源:生產環境下開發不再是一個項目一個工程,而是每一個模塊創建一個工程, 而多個模塊整合在一起就需要使用到像 Maven 這樣的構建工具。

Maven定義:一個自動化構建工具

Maven簡介:MavenApache軟體基金會組織維護的一款自動化構建工具,專註服務於Java平臺的項目構建和依賴管理。

構建:構建就是以我們編寫的 Java 代碼、框架配置文件、 國際化等其他資源文件、 JSP

面和圖片等靜態資源作為“原材料”, 去“生產”出一個可以運行的項目的過程。

2. Maven核心概念

2.1 POM

Project Object Model:項目對象模型。將 Java 工程的相關信息封裝為對象作為便於操作和管理的模型。Maven 工程的核心配置。可以說學習 Maven 就是學習 pom.xml 文件中的配置。

2.2約定的目錄結構

2.3坐標

Maven 的坐標
使用如下三個向量在 Maven 的倉庫中唯一的確定一個 Maven 工程。
[1]groupid:公司或組織的功能變數名稱倒序+當前項目名稱
[2]artifactId:當前項目的模塊名稱
[3]version:當前模塊的版本

<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>

 

 

2.4依賴管理

2.4.1依賴概念與配置

Maven 中最關鍵的部分, 我們使用 Maven 最主要的就是使用它的依賴管理功能。

可以近似理解為jar包的import語句思想。

<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>

 

2.4.2依賴的範圍

坐標的 scope 設置,是依賴的範圍。依賴的範圍有幾個可選值, 我們用得到的是: compiletestprovided 三個。

compile

test

provided

主程式

×

測試程式

參與部署

×

×

2.4.3依賴的傳遞性

A 依賴 BB 依賴 CA 能否使用 C 呢? 那要看 B 依賴 C 的範圍是不是 compile, 如果是則可用, 否則不可用。

2.4.4依賴的排除

切斷依賴的傳遞性

<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

 

2.4.5統一管理所依賴的jar包版本

[1] 統一聲明版本號

<properties>
<atguigu.spring.version>4.1.1.RELEASE</atguigu.spring.version>
</properties>

 

[2] 引用前面聲明的版本號

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${atguigu.spring.version}</version>

</dependency>

</dependencies>

2.4.6依賴的原則

  1. 最短路徑優先
  2. 相同路徑先聲明優先
  3. 父工程配置

2.4.7在父工程中管理依賴

<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>

</dependency>
</dependencies>
</dependencyManagement>

 

  1. 子工程配置

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>

 

2.4.8聚合

將多個工程拆分為模塊後, 需要手動逐個安裝到倉庫後依賴才能夠生效。 修改源碼後也需要逐個手動進行 clean 操作。 而使用了聚合之後就可以批量進行 Maven 工程的安裝、清理工作。

方法:在總的聚合工程中使用 modules/module 標簽組合,指定模塊工程的相對路徑

<modules>
<module>../Hello</module>
<module>../HelloFriend</module>
<module>../MakeFriends</module>
</modules>

2.5倉庫管理

本地倉庫:為當前本機電腦上的所有 Maven 工程服務

遠程倉庫:私服、中央倉庫、中央倉庫鏡像

 

2.6生命周期

Maven 有三套相互獨立的生命周期, 分別是:

Clean Lifecycle 在進行真正的構建之前進行一些清理工作。

Default Lifecycle 構建的核心部分,編譯,測試,打包,安裝,部署等等。

Site Lifecycle 生成項目報告,站點,發佈站點。

它們是相互獨立的,你可以僅僅調用 clean 來清理工作目錄,僅僅調用 site 來生成站點。 當然你也可以直接運行 mvn clean install site 運行所有這三套生命周期。運行任何一個階段的時候,它前面的所有階段都會被運行

 

2.7插件和目標

Maven 的核心僅僅定義了抽象的生命周期,具體的任務都是交由插件完成的。

●每個插件都能實現多個功能,每個功能就是一個插件目標。

Maven 的生命周期與插件目標相互綁定,以完成某個具體的構建任務。

例如:compile 就是插件 maven-compiler-plugin 的一個目標;

pre-clean 是插件 maven-clean-plugin 的一個目標。

3. 資料與工具準備

3.1資料

尚矽谷Java視頻教程_Maven視頻

https://www.bilibili.com/video/av36557763?p=1

3.2工具

MVNrepositoryJar包依賴信息搜索):

https://mvnrepository.com/

EclipseEE

https://www.eclipse.org/downloads/packages/

JDK

https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

Maven:http://maven.apache.org/


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

-Advertisement-
Play Games
更多相關文章
  • 本篇文章主要介紹PHP+swoole實現聊天群發功能,感興趣的朋友參考下,希望對大家有所幫助。 php代碼: $serv = new swoole_websocket_server("127.0.0.1",3999); //服務的基本設置 $serv->set(array( 'worker_num' ...
  • 這篇文章主要介紹了關於PHP實現微信網頁登陸授權開發,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下 更多PHP相關知識請關註我的專欄PHP​zhuanlan.zhihu.com 微信開放平臺和公眾平臺的區別 1.公眾平臺面向的時普通的用戶,比如自媒體和媒體,企業官方微信公眾賬號運營人 ...
  • 程式入口 SpringApplication.run(BeautyApplication.class, args); 執行此方法來載入整個SpringBoot的環境。 1. 從哪兒開始? SpringApplication.java /** * Run the Spring application, ...
  • 責編 | 劉靜 天氣降溫,感情卻升溫了? 上午剛到公司,就收到小Q發來的靈魂拷問: ​ ​ “Q仔!要不然下午請個假!我帶你去精神科看看!?”我實在忍不了,脫口而出。 話音未落,前排的運營小花回頭看向小Q,莞爾一笑,百媚橫生。 ​ 這個悶騷小伙子什麼時候勾搭上運營一枝花了?我正要追問,小Q看穿了我的 ...
  • Talk is cheap, show me the code! 以上這段mybatis的入門案例代碼,相信每一個瞭解mybatis的朋友都能看得懂,知碼醬同學今天也細細品了品! 1. 項目的路徑問題 : 在實際的項目中,並不推薦眾所周知的相對路徑和絕對路徑。 相對路徑: web應用是需要部署到服務 ...
  • 一、生成表格1.創建模型類(在 models.py文件中創建一個person類並且繼承models.Models類) 2.生成表格(在項目目錄下)(1)生成遷移文件:在pycharm下方的命令行Terminal中寫入python manage.py makemigrations,回車鍵後顯示遷移文件 ...
  • Mapper代理 "上一節" 中直接利用session+id來執行sql的方式存在一些問題 session執行sql時都需要提供要執行sql的id,而這個id是字元串類型,意味著id是否正確在編譯期間是無法獲知的,必須等到運行時才能發現錯誤, sql需要的參數和返回值類都不明確,這也增加了出錯的概率 ...
  • 傳值還是傳引用 調用函數時, 傳入的參數的 傳值 還是 傳引用 , 幾乎是每種編程語言都會關註的問題. 最近在使用 golang 的時候, 由於 傳值 和 傳引用 的方式沒有弄清楚, 導致了 BUG. 經過深入的嘗試, 終於弄明白了 golang 的 傳值 的 傳引用 , 嘗試過程記錄如下, 供大家 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...