Maven基礎之倉庫、命令、插件機制

在這里插入圖片描述

文章目錄

    • Maven 倉庫
      • 中央倉庫和本地倉庫
      • 中央倉庫
      • 本地倉庫
    • Maven 命令
      • generate 命令
      • compile 命令
      • clean 命令
      • test 命令
      • package 命令
      • install 命令
    • Maven 插件機制
      • 官方插件:Compile 插件
      • Tomcat 7 插件

Maven 倉庫

中央倉庫和本地倉庫

[?] 簡單一點說
中央倉庫是一個網址;本地倉庫是一個本地的文件夾。

在使用 maven 過程中,maven 會去網絡上的『中央倉庫』下載你所需要的 java 庫到你本地的某個文件夾下,這個存儲 maven 下載下來的 jar 包的文件夾就是你的『本地倉庫』。

[?] 補充
本質上,其實是 maven 要求你的"本地倉庫"中必須要有你所要用到的包,而因為你本地倉庫中沒有,所以,maven 會去網絡上的"中央倉庫"下載。

一旦在第一次下載過后,由于你的本地倉庫中存在了這個 jar 包,那么后續,maven 就不再重復下載它了。

中央倉庫

如果不指定的話,maven 默認是從 https://repo1.maven.org/maven2 下載(網速感人且不穩定)

在 maven 的全局配置文件 %homepath%/.m2/settings.xml 中,我們可以重新指定中央倉庫的網址。

我們在Maven 基礎之簡介,基礎配置中做的配置工作就是改動這個。

本地倉庫

本地倉庫指的是 “%homepath%/.m2/repository” 文件夾。

maven 從中央倉庫(上面所配置的那個網址)中下載下來的 java 庫的 jar 包,都會放在這里。

本地倉庫的查找順序:

  1. USER_HOME/.m2/settings.xml 中所配置的目錄
  2. M2_HOME/conf/settings.xml 中所配置的目錄
  3. USER_HOME/.m2/repository 目錄

Maven 命令

語法:

mvn <指令>

generate 命令

generate 命令用于創建項目。在你所期望建立項目的文件路徑下,執行如下命令

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

這條命令會在當前目錄下,新建一個名字與 artifactId 值相同的 Maven 項目。

compile 命令

執行 mvn compile 命令,完成編譯操作

執行完畢后,會生成 target 目錄,該目錄中存放了編譯后的字節碼文件(.class 文件)

clean 命令

執行 mvn clean 命令,完成清理操作。

執行完畢后,會將 target 目錄刪除。

test 命令

執行 mvn test 命令,完成單元測試操作。

執行完畢后,會在 target 目錄中生成三個文件夾:surefire 、surefire-reports(測試報告)、test-classes(測試的字節碼文件)

package 命令

執行 mvn package 命令,完成打包操作。

package 命令會涵蓋 compile 命令和 test 命令,即,執行 package 命令會觸發 compile 命令和 test 命令的執行。

執行完畢后,會在 target 目錄中生成一個文件,該文件可能是 jar 、war ,這取決于 pom.xml 配置文件中的 <packaging>

install 命令

將包安裝至本地倉庫,以便讓其它項目依賴。

install 命令會涵蓋 package 命令,即,執行 install 命令會觸發 package 命令的執行。

Maven 插件機制

Maven 本質上是一個插件的框架、平臺。任何一個 Maven 動作(即,命令)都是由具體的插件去完成的。

例如:

  • mvn compile 這個命令,就是由 maven-compiler-plugin 插件提供的。

  • mvn test 這個命令,就是由 maven-surefire-plugin 插件提供的。

  • mvn package 這個命令,就是由 maven-jar-plugin / maven-war-plugin 插件提供的。

Maven 除了提供了大量的官方插件外,還可以「安裝」第三方插件。

插件配置的依賴聲明整體結構(其它無關元素略。另外,build 習慣性在 dependencies 的后面)

project 
├── dependencies
└── build└── plugins├── plugin├── plugin├── ...└── plugin

官方插件:Compile 插件

通常,官方插件都是默認激活使用的。一般,我們不會通過自定義的配置去覆蓋默認配置。

主要包含如下元素:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin>...</plugin><plugin>...</plugin><plugin>...</plugin><plugins>
</build>

Tomcat 7 插件

tomcat 7 插件是一個 tomcat 7 容器的裁剪、精簡版,并且它還提供了一個 tomcat7:run 命令來用這個裁剪版的運行當前項目。

我們在開發過程中 tomcat7-maven-plugin 就能運行當前項目,查看運行結果。

詳情

<build><plugins><plugin><!-- 配置插件 --><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><path>/demo</path><port>8080</port><uriEncoding>UTF-8</uriEncoding></configuration></plugin><plugin>...</plugin><plugin>...</plugin><plugin>...</plugin></plugins>
</build>

[?] 警告
有 tomcat 8 版本的 maven 插件(即,一個 tomcat 8 容器的裁剪、精簡版),但是中央倉庫中并沒有。

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

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

相關文章

Redis復制

在Redis中&#xff0c;用戶可以通過執行SLAVEOF命令或者設置slaveof選項&#xff0c;讓一個服務器去復制(replicate) 另一個服務器&#xff0c;我們稱呼被復制的服務器為主服務器(master)&#xff0c;而對主服務器進行復制的服務器則被稱為從服務器(slave)&#xff0c;如下圖所…

Vue修飾符

事件修飾符 在Vue 2.0中&#xff0c;事件修飾符允許我們在處理事件時對其進行修改或增強。以下是一些常用的事件修飾符&#xff1a; .stop&#xff1a;阻止事件冒泡。使用此修飾符后&#xff0c;父元素的相同事件不會再觸發。.prevent&#xff1a;阻止事件的默認行為。比如&…

mybatis 中的<![CDATA[ ]]>用法及說明

<![CDATA[ ]]>作用 <![CDATA[ ]]> 在mybatis、ibatis等書寫SQL的xml中比較常見&#xff0c;是一種XML語法&#xff0c;他的作用是 可以忽略xml的轉義&#xff08;在該標簽中的語句和字符原本是什么樣的&#xff0c;在拼接成SQL后還是什么樣的&#xff09; 使用&a…

代碼生成模型任務設計

背景&#xff1a; 模型應該具備&#xff0c;理解代碼的能力、知道代碼規則的能力、知道關鍵詞和變量的能力、知道代碼邏輯的能力、文本到代碼翻譯能力、代碼關聯能力、代碼續寫能力。 代碼理解能力&#xff1a;pretrain讓模型讀足夠多代碼、記住代碼一些規則、代碼問答、基于…

PHP codeigniter4 搭配Nginx

> 主要是為了用Nginx運行PHP環境 1. Nginx 官方文檔的配置 default.conf? This configuration enables URLs without “index.php” in them and using CodeIgniter’s “404 - File Not Found” for URLs ending with “.php”. server {listen 80;listen [::]:80;se…

springboot 基礎

鞏固基礎&#xff0c;砥礪前行 。 只有不斷重復&#xff0c;才能做到超越自己。 能堅持把簡單的事情做到極致&#xff0c;也是不容易的。 SpringBoot JavaEE 簡介 JavaEE的局限性&#xff1a; 1、過于復雜&#xff0c;JavaEE正對的是復雜的分布式企業應用&#xff0c;然而現實…

MySQL表的基礎的增刪改查

增(insert into) 插入所有列的數據 不寫具體列名要確保字段都對應正確 -- 假設你有一個名為 "employees" 的表&#xff0c;有多個列 INSERT INTO employees VALUES (101, Alice, Manager, 50000);插入指定列的數據 -- 假設你有一個名為 "students" 的表&…

爬蟲如何應對網站的反爬機制?如何查找user-agent對應的值

import requestsurl https://movie.douban.com/top250 response requests.get(url) # 查看結果 print(response)在requests使用一文中我們有講到&#xff0c;當狀態碼不是200時表示爬蟲不可用&#xff0c;也就是說我們獲取不到網頁源代碼。但是我們還是可以掙扎一下&#xff…

一文秒懂HTTP協議到底是什么?原理?

目錄 1.什么是http協議&#xff1f; 2.http協議的版本&#xff1f; 3.http文本框架 4.http請求報文 5.http報文格式 6.http響應報文 7.HTTP的狀態碼 8.HTTP首部介紹 9.什么是URL和URI&#xff1f; 10.CGI是什么&#xff1f; 1.什么是http協議&#xff1f; http&#…

測試架構師如何落地性能測試方案(一)

背景描述&#xff1a; 最近剛接手一個新項目&#xff0c;在最開始的時候要求對這個項目做性能測試&#xff0c;產品經理也給不出性能需求&#xff0c;只因為這個項目是電商項目&#xff0c;可能會有高并發&#xff0c;秒殺的場景&#xff0c;所以產品經理要求我們對這個項目必…

vue3父子組件傳值;vue3子組件傳值給父組件;vue3子組件監聽父組件接口傳值;父子組件事件調用

代碼在文末&#xff0c;均可直接復制使用 本文主要描述&#xff0c;父子組件傳值、調用等問題 文章目錄 問題1&#xff1a;子組件接收不到父組件傳值問題2&#xff1a;子組件接受的值&#xff0c;修改后&#xff0c;發現父組件值也改變了問題3&#xff1a;子組件接受值&#xf…

07-HDFS入門及shell命令

1 文件系統 是一種存儲和組織數據的方法&#xff0c;它使得文件訪問和查詢變得容易使得文件和樹形目錄的抽象邏輯概念代替了磁盤等物理設備使用數據塊的概念&#xff0c;用戶使用文件系統來保存數據不必關心數據底層存在硬盤哪里&#xff0c;只需記住這個文件的所屬目錄和文件…

STM32基于CubeIDE和HAL庫 基礎入門學習筆記:物聯網項目開發流程和思路

文章目錄&#xff1a; 第一部分&#xff1a;項目開始前的計劃與準備 1.項目策劃和開發規范 1.1 項目要求文檔 1.2 技術實現文檔 1.3 開發規范 2.創建項目工程與日志 第二部分&#xff1a;調通硬件電路與驅動程序 第三部分&#xff1a;編寫最基礎的應用程序 第四部分&…

opencv帶GStreamer之Windows編譯

目錄 1、下載GStreamer和安裝2. GSTReamer CMake配置3. 驗證是否配置成功 1、下載GStreamer和安裝 下載地址如下&#xff1a; gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安裝目錄無要求&#xff0c;主要是安裝完設置環境變量 xxx\1…

【css】漸變

漸變是設置一種顏色或者多種顏色之間的過度變化。 兩種漸變類型&#xff1a; 線性漸變&#xff08;向下/向上/向左/向右/對角線&#xff09; 徑向漸變&#xff08;由其中心定義&#xff09; 1、線性漸變 語法&#xff1a;background-image: linear-gradient(direction, co…

一圖搞懂二層交換機、三層交換機和路由器的區別

二層交換機、三層交換機、路由器的區別 二層交換機、三層交換機、路由器對比二層交換機三層交換機路由器工作在第幾層數據鏈路層&#xff08;第二層&#xff09;網絡層&#xff08;第三層&#xff09;網絡層&#xff08;第三層&#xff09;功能學習和轉發幀根據IP地址轉發數據…

數據鏈路層是什么?

數據鏈路層承接上層的數據&#xff0c;然后使用下層提供的信道&#xff0c;按照一定的規則&#xff0c;進行數據傳輸。 物理層提供了傳輸媒體與連接&#xff08;信道&#xff09;&#xff08;數據鏈路層使用的信道通常是物理層提供的信道&#xff09;&#xff0c;即提供了比特…

webpack自動注冊全局組件

例如&#xff0c;在form文件夾下有許多流程類表單&#xff0c;一個一個注冊引入非常浪費時間&#xff0c;可使用webpack的require.context方法來自動導入 import { firstToUpper } from /utils/methodsconst taskTable {install: vue > {const req require.context(../fo…

springboot結合element-ui實現增刪改查,附前端完整代碼

實現功能 前端完整代碼 后端接口 登錄&#xff0c;注冊&#xff0c;查詢所有用戶&#xff0c;根據用戶名模糊查詢&#xff0c;添加用戶&#xff0c;更新用戶&#xff0c;刪除用戶 前端 注冊&#xff0c;登錄&#xff0c;退出&#xff0c;用戶增刪改查&#xff0c;導航欄&#…

Android Sutdio 導入libs文件夾下的jar包沒反應

有點離譜&#xff0c;笨笨的腦子才犯的錯誤 首先發現問題&#xff1a;轉移項目的時候 直接復制粘貼libs文件夾下的jar包到新項目&#xff0c;在build.gradle文件下 使用語句并應用也沒反應&#xff08;jar包沒有出現箭頭且代碼報錯&#xff0c;找不到&#xff09; implementa…