maven知識點

一、Maven簡介

1.1 在項目中如何導入jar包?

  • 下載jar包 (mvn)
  • 將下載的jar包拷貝到項目中(WEB-INF/lib)
  • 選擇jar文件–右鍵–Add as Library

1.2 傳統導入jar包的方式存在什么問題?

  • 步驟多(相對)——繁瑣
  • 在不同的項目中如果需要相同的jar包,需要分別存儲這個jar文件——冗余項目體積大
  • 在不同的環境下可能因為jar文件版本不一致導致項目無法運行(重新配置)——移植性差

1.3 項目生命周期

項目從編譯到運行的整個過程

完整的生命周期:清理緩存—校驗—編譯—測試—打包—安裝—部署

  • IDEA提供了一鍵構建項目的功能,但是如果我們需要自定義的生命周期管理,卻沒有現成的工具(清理緩存)

1.4 Maven簡介

Maven是一個基于項目對象模型(POM)用于進行項目的依賴管理、生命周期管理的工具軟件

核心功能

  • 依賴管理

  • 生命周期管理

  • 聚合工程

二、Maven安裝及配置

2.1 Maven下載

  • http://maven.apache.org/download.cgi

2.2 Maven安裝

Maven是基于Java語言進行開發的,因此依賴JDK(建議JDK1.7+)

開箱即用:直接解壓即可

  • 解壓(d:/mvn)
  • 目錄結構:
    • bin 存放指令文件(Maven提供了一個mvn指令)
    • boot 包含了一個類加載框架的jar文件
    • conf 包含了Maven的核心配置文件settings.xml
    • lib 存放了maven運行所需的jar文件

2.3 配置環境變量

  • MAVEN_HOME D:\mvn\apache-maven-3.6.3

  • Path 增加 %MAVEN_HOME%\bin

測試
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-czWP5lwp-1639493922539)(imgs/1615948601495.png)]

三、Maven的項目結構

使用Maven進行項目還有一個好處:無論使用什么樣 的開發工具(eclipse/idea)項目的結構是統一的。

3.1 Maven的項目結構

fmwy(項目名稱)
--src--main (存放項目的源文件)--java (存放java代碼,相當于傳統項目中的src目錄)--resources (存放配置文件和靜態資源的目錄,相當于傳統項目的web目錄)--test (存放項目的單元測試代碼)--java(測試代碼)
--pom.xml

3.2 pom.xml

POM Project Object Model,Maven可以根據pom文件的配置對此項目進行依賴管理;也就是說項目中需要依賴,直接在pom.xml進行配置即可

<?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><!--指定項目的標識:G 企業標識 A 項目標識 V 版本--><groupId>com.qfedu</groupId><artifactId>fmwy</artifactId><version>1.0.0</version><!--配置當前項目的依賴--><dependencies></dependencies>
</project>

如果需要在當前項目中添加依賴,只需在pom.xml文件中進行依賴配置即可

配置依賴 找到依賴的坐標,添加dependencies標簽即可

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>

四、依賴管理

4.1 Maven依賴管理的流程

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4getFT2I-1639493922540)(imgs/1615952656309.png)]

4.2 Maven倉庫介紹

  • 本地倉庫 就是本地計算機上的某個文件夾(可以是自定義的任何文件夾)
  • 遠程倉庫 就是遠程主機上的jar文件倉庫
    • 中央倉庫 maven官方提供的倉庫,包含了所需的一切依賴(免配置)
    • 公共倉庫 除了中央倉庫以外的第三方倉庫都是公共倉庫,例如aliyun(需要配置)
    • 私服 企業搭建的供內部使用的maven倉庫
maven倉庫
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EUsfIjWB-1639493922542)(imgs/1615953762130.png)]

4.3 Maven倉庫配置

在maven_home/conf/settings.xml中進行配置

配置本地倉庫

<localRepository>d:\repo</localRepository>

配置公共倉庫

<mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
</mirrors>

五、項目生命周期管理

5.1 生命周期介紹

項目構建的聲明周期:項目開發結束之后部署到運行環境運行的過程

  • 清除緩存
  • 檢查
  • 編譯
  • 測試(就會執行maven項目中test目錄下的單元測試)
  • 打包(war 、 jar)
  • 安裝 (jar會被安裝到本地倉庫)
  • 部署 (將項目生成的包放到外部服務器中—私服倉庫)

5.2 生命周期管理指令

在項目的根目錄下執行mvn指令(此目錄下必須包含pom.xml)

  • 清除緩存
mvn clean
  • 檢查
mvn check
  • 編譯
mvn compile
  • 測試
mvn test
  • 打包
mvn package
  • 安裝
mvn install
  • 部署
mvn deploye

六、基于IDEA的Maven使用

6.1 在IDEA中關聯Maven

maven配置
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-deeeiH8r-1639493922543)(imgs/1615963348490.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JX37BPXo-1639493922543)(imgs/1615963666386.png)]

說明: IDEA本身集成了Maven,考慮到IDEA和Maven版本的兼容性,Idea不建議配置比默認版本更新的版本,建議使用idea自帶的maven。

6.2 使用IDEA創建Maven項目

6.2.1 Java項目
創建Java項目
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5R9OQfeU-1639493922544)(imgs/1615964274767.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-v1wQOwiB-1639493922545)(imgs/1615964923674.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-m4dYghBA-1639493922545)(imgs/1615965081111.png)]
6.2.2 web項目
  • 創建maven項目:maven-demo2

  • 在pom.xml文件設置打包方式為war

    <?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>com.qfedu</groupId><artifactId>maven-demo2</artifactId><version>1.0.0</version><!--設置項目打包方式為war--><packaging>war</packaging></project>
    
  • 完成web項目結構

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8WjDxUSM-1639493922547)(imgs/1615966156430.png)]

  • 配置web組件—Tomcat

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lPE9NhSB-1639493922548)(imgs/1615966233010.png)]

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1bDLLGSg-1639493922548)(imgs/1615966284891.png)]

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rZy4Cccd-1639493922549)(imgs/1615966379430.png)]

  • 部署web項目

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XnmqI1I6-1639493922550)(imgs/1615966537967.png)]

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ItrjW2wt-1639493922552)(imgs/1615966622390.png)]

6.3 在IDEA中使用Maven進行依賴管理

6.3.1 查找依賴坐標
  • https://mvnrepository.com/
6.3.2 添加依賴
  • 將依賴的坐標配置到項目的pom.xml文件dependencies標簽中
<?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>com.qfedu</groupId><artifactId>maven-demo2</artifactId><version>1.0.0</version><!--設置項目打包方式為war--><packaging>war</packaging><dependencies><!--在此位置配置項目中所需依賴的坐標 GAV--><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version><scope>provided</scope></dependency></dependencies>
</project>
6.3.3 依賴范圍

在通過dependency添加依賴時,可以通過scope標簽配置當前依賴的適用范圍

  • test 只在項目測試階段引入當前依賴(編譯、測試)

    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
    </dependency>
    
  • runtime 只在運行時使用(運行、測試運行)

  • provided 在(編譯、測試、運行)

  • compile 在(編譯、測試、運行、打包)都引入

6.4 在IDEA中使用Maven進行項目構建

6.4.1 Maven項目構建生命周期說明
  • clean 清理緩存 清理項目生成的緩存
  • validate 校驗 驗證項目需要是正確的(項目信息、依賴)
  • compile 編譯 編譯項目專供的源代碼
  • test 測試 運行項目中的單元測試
  • package 打包 將項目編譯后的代碼打包成發布格式
  • verify 檢查 對集成測試的結果進行檢查、確保項目的質量是達標的
  • install 安裝 將包安裝到maven的本地倉庫,以便在本地的其他項目中可以引用此項目(聚合工程)
  • deploy 部署 將包安裝到私服的倉庫,以供其他開發人員共享
6.4.2 IDEA進行生命周期管理
  • 可視化

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3zlBGV49-1639493922553)(imgs/1615970887716.png)]

  • 終端指令

    選擇項目名稱—右鍵—Open in Terminal

    mvn clean

七、私服

企業搭建供內部使用的一個Maven倉庫

  • 開發者需要依賴直接從私服下載
  • 私服可以實現企業內部依賴的共享:當企業開發了一個通用插件(jar),可以發布到私服,可以連接到當前私服的其他開發者就可以共享這個插件了

7.1 私服搭建

我們可以通過專門的Maven倉庫管理軟件來搭建私服。例如:Apache Archiva、Nexus

7.1.1 下載Nexus
  • 官網 https://www.sonatype.com/
  • 下載 https://help.sonatype.com/repomanager2/download
7.1.2 解壓nexus

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-msbenlmB-1639493922556)(imgs/1615972207503.png)]

7.1.3 安裝并運行nexus
  • 進入到nexus-2.14.11-01/bin目錄

  • 管理員身份打開cmd命令行,執行指令

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gk00OGO6-1639493922559)(imgs/1615972590023.png)]

7.1.4 登錄Nexus

私服管理器登錄地址: http://localhost:8081/nexus

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-w6LzUBsH-1639493922560)(imgs/1615972765110.png)]

  • 私服中倉庫類型

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VFt0wc7V-1639493922561)(imgs/1615972987904.png)]

  • 私服倉庫組的配置

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DbBt9WmM-1639493922562)(imgs/1615973337723.png)]

7.2 配置私服

7.2.1 在maven的settings.xml文件的servers標簽中
<!--配置連接私服所需的帳號和密碼-->
<server> <id>nexus-public</id> <!-- nexus的認證id --><username>admin</username> <!--nexus中的用戶名密碼--><password>admin123</password> 
</server>
7.2.2 在maven的settings.xml文件的profiles標簽中

repository 和 pluginRepository的 id子標簽的值,要和上面配置的server 的id子標簽的值一致

<profile> <id>nexus</id> <repositories> <repository> <id>nexus-public</id>      <name>Nexus Release Snapshot Repository</name>   <url>http://localhost:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository></repositories> <pluginRepositories><pluginRepository> <id>nexus-public</id> <url>http://localhost:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> 
</profile>
7.2.3 在maven的settings.xml文件的activeProfiles配置激活profile
 <activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>

Maven聚合工程

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

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

相關文章

使用SpringBoot yml配置文件

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.上一次我們已經使用SpringBoot實現了一個簡單的HelloWord程序&#xff0c;辣么接下來我們簡單的使用一下他的yml格式的配置文件。 2.在…

軟件行業資訊

為什么只有設計師才能發明流行的新語言 先回顧一下知名編程語言的作者和創造時間&#xff1a;Fortran 語言&#xff0c;50年代&#xff0c;IBM 研究員&#xff1b;Lisp 語言&#xff0c;50年代&#xff0c;MIT 的教授和學生&#xff1b;C語言&#xff0c;70年代&#xff0c;貝爾…

spring知識點

一、Spring概述 1.1 web項目開發中的耦合度問題 在Servlet中需要調用service中的方法&#xff0c;則需要在Servlet類中通過new關鍵字創建Service的實例 public interface ProductService{public List<Product> listProducts(); }public class ProductServiceImpl1 imple…

Linux系統下的權限試題測試

不會做的留言&#xff0c;到時在發布答案&#xff01;一、 有兩個參賽團隊team1、team2&#xff0c;兩個團隊各3人, 這兩個團隊互相競爭&#xff0c;各需提交一份報告&#xff0c;每組成員可以修改自己團隊內的所有文件&#xff0c;且不能讓其他團隊的人修改自己的文件內容&…

電子科大軟件系統架構設計——軟件建模詳細設計

文章目錄 軟件建模詳細設計概述軟件建模詳細設計目標軟件建模詳細設計原則開閉原則里氏 (Liskov) 替換原則依賴倒置原則接口分離原則單一職責原則最少知識原則&#xff08;迪米特法則&#xff09;高內聚原則松耦合原則可重用原則 軟件建模詳細設計內容 UML 軟件靜態結構視圖建模…

YAML文件解析

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 YAML是“另一種標記語言”的外語縮寫,YAML 是一種比JSON&#xff08;json多層次{ 與 [ 會被搞暈的&#xff09;更直觀的表現形式&#xf…

120分鐘React快速掃盲教程

在教程開端先說些題外話&#xff0c;我喜歡在學習一門新技術或讀過一本書后&#xff0c;寫一篇教程或總結&#xff0c;既能幫助消化&#xff0c;也能加深印象和發現自己未注意的細節&#xff0c;寫的過程其實仍然是一個學習的過程。有個記錄的話&#xff0c;在未來需要用到相關…

springmvc知識點

一、SpringMVC概述 Spring MVC 是由Spring官方提供的基于MVC設計理念的web框架。 SpringMVC是基于Servlet封裝的用于實現MVC控制的框架&#xff0c;實現前端和服務端的交互。 1.1 SpringMVC優勢 嚴格遵守了MVC分層思想 采用了松耦合、插件式結構&#xff1b;相比較于我們封裝的…

spring @component的作用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、controller 控制器&#xff08;注入服務&#xff09; 2、service 服務&#xff08;注入dao&#xff09; 3、repository dao&#xff…

微信小程序 懸浮按鈕

2019獨角獸企業重金招聘Python工程師標準>>> 效果視頻 https://pan.baidu.com/s/1yfrDaG9YAX0--v0EA3awZA 布局需要按照圓形排列&#xff0c;所以我們需要計算每個點的坐標 代碼部分 <view styleposition:fixed; wx:for"{{list}}" wx:for-index"i…

C語言const關鍵字—也許該被替換為readolny

const 是constant 的縮寫&#xff0c;是恒定不變的意思&#xff0c;也翻譯為常量、常數等。很不幸&#xff0c;正是因為這一點&#xff0c;很多人都認為被const 修飾的值是常量。這是不精確的&#xff0c;精確的說應該是只讀的變量&#xff0c;其值在編譯時不能被使用&#xff…

dbus服務自啟動方法

Linux 一般發行版上 "/usr/share/dbus-1/services/"目錄就是dbus放service文件的地方。 需要自動啟動的服務器 就在這個目錄放一個 service文件&#xff0c;內容如下&#xff1a; $ cat /usr/share/dbus-1/services/dhcdbd.service [D-BUS Service] Namecom.redhat.…

在Spring Boot中使用 @ConfigurationProperties 注解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 上一篇博客寫了 如何在Spring Boot application中配置mail . 使用 Value 注解注入屬性. 但 Spring Boot 提供了另一種方式 &#xff0c;能…

Micronaut教程:如何使用基于JVM的框架構建微服務

\本文要點\\Micronaut是一種基于jvm的現代化全棧框架&#xff0c;用于構建模塊化且易于測試的微服務應用程序。\\tMicronaut提供完全的編譯時、反射無關的依賴注入和AOP。\\t該框架的開發團隊和Grails框架的開發團隊是同一個。\\tMicronaut框架集成了云技術&#xff0c;服務發現…

C語言extern關鍵詞—最會帶帽子的關鍵字

extern&#xff0c;外面的、外來的意思。那它有什么作用呢&#xff1f;舉個例子&#xff1a;假設你在大街上看到一個黑皮膚綠眼睛紅頭發的美女&#xff08;外星人&#xff1f;&#xff09;或者帥哥。你的第一反應就是這人不是國產的。extern 就相當于他們的這些區別于中國人的特…

解決Coldfusion連接MySQL數據庫的問題

在連接MySQL時&#xff0c;出現了如下錯誤&#xff1a; Connections to MySQL Community Server are not supported. Please contact MySQL to obtain a MySQL Enterprise or Commercial version. 解決方案&#xff1a; step 1: download the JDBC driver JDBC Driver for MySQ…

范式知識點

Mysql數據庫 ?前關系數據庫有六種范式&#xff1a; 第?范式&#xff08;1NF&#xff09;、第?范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;、巴斯-科德范式 &#xff08;BCNF&#xff09;、第四范式(4NF&#xff09;和第五范式&#xff08;5NF&a…

Tensorflow入門----占位符、常量和Session

安裝好TensorFlow之后&#xff0c;開一個python環境&#xff0c;就可以開始運行和使用TensorFlow了。 先給一個實例&#xff0c; #先導入TensorFlowimport tensorflow as tf # Create TensorFlow object called hello_constanthello_constant tf.constant(Hello World!) with …

C語言union關鍵字

union 關鍵字的用法與struct 的用法非常類似。union 維護足夠的空間來置放多個數據成員中的“一種”&#xff0c;而不是為每一個數據成員配置空間&#xff0c;在union 中所有的數據成員共用一個空間&#xff0c;同一時間只能儲存其中一個數據成員&#xff0c;所有的數據成員具有…

js 深拷貝 和 淺拷貝

1、 ...運算符 &#xff08;淺拷貝&#xff09; let obj {a:1,b:2}; let obj2 {...obj}; obj.a3 obj //{a: 3, b: 2} obj2 //{a: 1, b: 2}a {a:[{b:1}]}; b a ;b.a[0].b 2; //b {a:[{b:2}]}a // a {a:[{b:2}]} 2、 JSON.parse(JSON.stringify(參數))…