Maven


一.Maven介紹

1.1 什么是 Maven

Maven 的正確發音是[ˈmevən],而不是“馬瘟”以及其他什么瘟。Maven 在美國是一個口語化的詞
語,代表專家、內行的意思。
一個對 Maven 比較正式的定義是這么說的:Maven 是一個項目管理工具,它包含了一個項目對象模
型 (POM:Project Object Model),一組標准集合,一個項目生命周期(Project Lifecycle),一個依賴管
理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標
(goal)的邏輯。

 Maven 是項目管理工具 對軟件項目提供構建與依賴管理

Maven是Apache下的Java開源項目

1.2Maven 核心特性

項目設置遵循統一的規則,保證不同開發環境的兼容性

強大的依賴管理,項目依賴組件自動下載、自動更新

可擴展的插件機制,使用簡單,功能豐富

Maven 的依賴管理:傳統工程jar包放在項目中,maven開發的工程根據jar的坐標找到jar倉庫。

倉庫檢索網站https://search.maven.org/

項目的一鍵構建:我們的項目,往往都要經歷編譯、測試、運行、打包、安裝 ,部署等一系列過程。指的是項目從編譯、測試、運行、打包、安裝 ,部署整個過程都交給 maven 進行管理,這個過程稱為構建。

二. Maven 的使用

1.下載安裝:

1.1下載並解壓到D盤

Maven – Download Apache Maven

下載第二個

1.2添加環境變量

    變量名:MAVEN_HOME

    變量值:D:\apache-maven-3.8.1

    在Path中添加:%MAVEN_HOME%\bin

    確保環境變量中有JAVAHOME

   輸入mvn -v

1.3本地倉庫的配置 

MAVE_HOME/conf/settings.xml 文件中配置本地倉庫位置

  <localRepository>D:\Apache\repository</localRepository>

1.4設置maven編碼為utf-8

設置環境變量

變量名 MAVEN_OPTS

變量值 -Xms256m -Xmx512m -Dfile.encoding=UTF-8

 運行mvn -v查看修改結果

2.maven項目標准目錄結構

src/main/java目錄     核心代碼
src/main/resources 配置文件部分
src/test/java目錄 測試代碼部分,如 JUnit 測試類
src/test/resources 測試配置文件,如 spring, hibernate 配置文件
src/main/webapp 頁面資源 ,js,css,圖片等等
target 項目輸出的目錄,用於存儲jar,war文件
target/classes 字節碼(.class)的編譯輸出目錄
pom.xml maven 項目核心配置文件

3.Maven常用命令

命令 用途
mvn archetype:generate 創建Maven工程結構
mvn compile 編譯源代碼
mvn test 執行測試用例
mvn clean 清除產生的項目
mvn package 項目打包
mvn install 安裝至本地倉庫

1.clean
clean 是 maven 工程的清理命令,執行 clean 會刪除 target 目錄及內容。

2.compile
compile 是 maven 工程的編譯命令,作用是將 src/main/java 下的文件編譯為 class 文件輸出到 target
目錄下。

3.test
test 是 maven 工程的測試命令 mvn test,會執行 src/test/java 下的單元測試類。也會編譯src/main/java的代碼

4.package
package 是 maven 工程的打包命令,對於 java 工程執行 package 打成 jar 包,對於 web 工程打成 war
包。

5.install
install 是 maven 工程的安裝命令,執行 install 將 maven 打成 jar 包或 war 包發布到本地倉庫。會執行compile,test,package,把項目放在了本地倉庫

4.Maven生命周期

5.Maven概念模型

項目對象模型 (Project Object Model)
一個 maven 工程都有一個 pom.xml 文件,通過 pom.xml 文件定義項目的坐標、項目依賴、項目信息、
插件目標等。

賴管理系統(Dependency Management System)
通過 maven 的依賴管理對項目所依賴的 jar 包進行統一管理。
比如:項目依賴 junit4.9,通過在 pom.xml 中定義 junit4.9 的依賴即使用 junit4.9,如下所示是 junit4.9
的依賴定義:

<!-- 依賴關系 -->
<dependencies>
	<!-- 此項目運行使用 junit,所以此項目依賴 junit -->
	<dependency>
		<!-- junit 的項目名稱 -->
		<groupId>junit</groupId>
		<!-- junit 的模塊名稱 -->
		<artifactId>junit</artifactId>
		<!-- junit 版本 -->
		<version>4.9</version>
		<!-- 依賴范圍:單元測試時使用 junit -->
		<scope>test</scope>
</dependency>

三.配置

pom.xml 是 Maven 項目的核心配置文件,位於每個工程的根目錄,基本配置如下:
<project > :文件的根節點 .
<modelversion > : pom.xml 使用的對象模型版本
<groupId > :項目名稱,一般寫項目的域名
<artifactId > :模塊名稱,子項目名或模塊名稱
<version > :產品的版本號 .
<packaging > :打包類型,一般有 jar、war、pom 等
<name > :項目的顯示名,常用於 Maven 生成的文檔。
<description > :項目描述,常用於 Maven 生成的文檔
<dependencies> :項目依賴構件配置,配置項目依賴構件的坐標
<build> :項目構建配置,配置編譯、運行插件等。

1.設置Maven本地倉庫路徑

在setings.xml 文件<settings節點下添加  

  <localRepository>D:/maven_repositroy</localRepository>

2.坐標

 GroupId:機構或者團體的英文,采用 逆向域名 形式書寫

ArtifactId:項目名稱 說明其用途,例如:cms,oa...
Version: 版本號,一般采用 版本+單詞 形式  例如1.1.0.RELEASE 

3.依賴范圍

依賴范圍 編譯有效 測試有效 運行時有效 例如
compile Y Y Y spring-core
test   Y   Junit
provided Y Y   servlet-api
runtime   Y Y JDBC驅動
system Y Y   本地的,Maven倉庫之外的類庫

4.設置jdk版本

<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>
      </plugins>
  </build>

5.設置tomcat插件

	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat9-maven-plugin</artifactId>
            <version>2.2</version>
			<configuration>
				<port>8080</port>
              <path></path>
			</configuration>
		</plugin>
      </plugins>

6.Maven國內服務器

maven.aliyun.com    倉庫服務 (aliyun.com)

1.選擇public

2.在版本下添加依賴

<repositories>
    <repository>
        <!--創建私服-->
        <id>aliyun</id>
        <name>aliyun</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </repository>
</repositories>

四.idea 開發 maven 項目

1 打開FileSettings 配置 maven

-DarchetypeCatalog=internal在沒網時會加載本地的

五.Maven聚合工程

1 Maven聚合工程概念

Maven聚合工程:就是可以在一個Maven父工程中創建多個組件(項目),這個多個組件之間可以相互依賴,實現組件的復用

2 創建Maven聚合工程

2.1 創建Maven父工程

Maven聚合工程的父工程 packing必須為 pom

  • 創建一個Maven工程

  • 修改父工程的pom.xml,設置打包方式為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>com.qfedu</groupId>
        <artifactId>maven-parent</artifactId>
        <version>1.0.0</version>
        <packaging>pom</packaging>
    ​
    </project>
  • 父工程用於管理子工程,不進行業務實現,因此src目錄可以選擇性刪除

2.2 創建Module
  • 選擇父工程---右鍵---New---Module

  • 輸入子工程名稱(g和v都從父工程繼承)

  • 子工程的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">
        <!--module的pom繼承 父工程的pom-->
        <parent>
            <artifactId>maven-parent</artifactId>
            <groupId>com.qfedu</groupId>
            <version>1.0.0</version>
        </parent>
    ​
        <modelVersion>4.0.0</modelVersion>
        <artifactId>common</artifactId>
    ​
    </project>
  • 父工程的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>com.qfedu</groupId>
        <artifactId>maven-parent</artifactId>
        <version>1.0.0</version>
    ​
        <!--  聲明當前父工程的子module  -->
        <modules>
            <module>common</module>
        </modules>
    ​
        <packaging>pom</packaging>
    ​
    </project>

3 Maven聚合工程依賴繼承

3.1 依賴繼承
  • 在父工程的pom文件添加的依賴,會被子工程繼承

3.2 依賴版本管理

在父工程的pom.xml的dependencyManagement中添加依賴,表示定義子工程中此依賴的默認版本(此定義並不會讓子工程中添加當前依賴)

<!--  依賴管理:在dependencyManagement中添加依賴,表示定義子工程中此依賴的默認版本  -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.6.1</version>
        </dependency>
    </dependencies>
</dependencyManagement>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM