banner
武大胆

武大胆

不能为这个世界留下些什么,但是却想在这个世界留下些什么!
bilibili
x
discord user
email
steam

工具篇-Maven

是什麼?#

  • Apache Maven是一個由 java 語言編寫的軟體專案管理及自動建構工具

Apache Maven core

能幹什麼?#

專案建構和依賴管理#

  • 透過在專案物件模型(Project Object Model,POM)檔案中添加 dependency 完成依賴管理

進行專案建構生命週期中的操作執行#

  • 透過使用 maven 中的插件進行配置,完成生命週期目標管理
階段處理描述
清理 clean清理專案清理專案之前產出的 JAR/WAR 和建構資訊
驗證 validate驗證專案驗證專案是否正確且所有必須資訊是可用的
編譯 compile執行編譯源代碼編譯在此階段完成
測試 Test測試使用適當的單元測試框架(例如 JUnit)運行測試。
包裝 package打包創建 JAR/WAR 包如在 pom.xml 中定義提及的包
檢查 verify檢查對整合測試的結果進行檢查,以保證品質達標
安裝 install安裝安裝打包的專案到本地倉庫,以供其他專案使用
部署 deploy部署拷貝最終的工程包到遠端倉庫中,以共享給其他開發人員和工程

如何使用?#

安裝與配置#

目前 IDE 都是內置集成了 maven,一般安裝 maven 的目的是為了在命令行中可以執行 maven 的生命週期操作,完成專案編譯建構。

下載#

官方下載地址:http://maven.apache.org/download.cgi

C:.
│  LICENSE
│  NOTICE
│  README.txt

├─bin
│      m2.conf
│      mvn
mvn.cmd
│      mvnDebug
mvnDebug.cmd
│      mvnyjp

├─boot
│      plexus-classworlds-2.8.0.jar
│      plexus-classworlds.license

├─conf
│  │  settings.xml
│  │  toolchains.xml
│  │
│  └─logging
│          simplelogger.properties

└─lib

配置#

環境變數配置#

  1. 新增系統變數MAVEN_HOME,值填寫 maven 解壓出來的根目錄

image

  1. 環境變數 path 中新增一條記錄 %MAVEN_HOME%\bin

image

  1. 驗證環境變數配置生效

打開 cmd,輸入 mvn -version 能夠查詢到 maven 的版本則說明 maven 配置成功

image

Maven 倉庫配置#

  • 當需要引入依賴的 jar 包時,maven 會在本地倉庫進行查找,本地資源倉庫默認在用戶目錄的.m2 目錄下的repository目錄。
  • 如果本地沒有對應資源,就會從中央倉庫進行下載。
  • 由於中央倉庫是境外伺服器,所以需要將阿里雲鏡像加入到 maven 配置中。
  1. 中央倉庫的修改

在 maven 目錄的 conf 目錄下,修改settings.xmlmirrors標籤中加入如下內容:

修改完之後,把 settings.xml 檔案複製到.m2 目錄下,即可以被全局調用。

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

Tip

xml(extensible markup language 可擴展標記語言)
<元素 属性 ="属性值"> 內容 </ 元素 >
xml 中用 表示註釋。

  1. 本地倉庫的修改
<localRepository>/path/to/local/repo</localRepository>

IDEA 中的 maven 配置#

在 IDEA 中的File->Settings選單裡找到 Build,Execution,Deployment選單,在Build tools 選單中

點擊 maven,確認User settings file檔案是本地.m2 目錄下的settings.xml檔案,倉庫目錄是本地.m2 目錄下的 repository 目錄。

image

使用#

管理依賴#

在 project 元素中添加 dependencies,用 dependency 加依賴

maven 引入依賴:

  • 從本地倉庫找
  • 中央倉庫
  • 遠端倉庫 (自己內網搭建的倉庫地址)

image

專案編譯環境設定#

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

管理生命週期#

使用不同的 maven 建構插件來完成生命週期動作

  1. 執行測試代碼
  • 專案中的測試代碼運行可以直接透過執行 test 生命週期來完成;
  • 在編寫了測試代碼的專案中,maven 在完成打包操作時也會自動執行在test目錄下的測試代碼;
  • 而如果想要定制執行部分的測試代碼或者有其他需求,則可以透過引入surefire插件來完成配置;
  • 在 pom 檔案的元素裡的元素裡添加如下插件:
<!--            測試插件surefire-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-junit47</artifactId>
                        <version>2.19</version>
                    </dependency>
                </dependencies>
                <!-- configuration元素可以省略,那麼會默認運行/src/test/java下的所有檔案 -->
                <!-- 在configuration中可以配置放在src/test/java目錄下需要執行的類檔名 -->
                <configuration>
<!--                    如果要跳過單元測試執行,加上skipTests-->
<!--                    <skipTests>true</skipTests>-->
<!--    配置要執行的測試代碼,配置類名即可。支持使用*做通配,比如*Test表示Test結尾的檔案,也支持正則表達式-->
                    <includes>
                        <include>ErrorLoginTest</include>
                        <include>MavenJunitTest</include>
                    </includes>
<!--                    配置不執行的測試類-->
                    <excludes>
                        <exclude>LoginSuite</exclude>
                    </excludes>
                </configuration>
            </plugin>
  1. 打出一個可執行的 jar

可直接使用 java -jar 命令進行運行

  • 如果只需要打包專案為 Jar,不需要生成可運行的 Jar,直接順序執行 clean 和 package操作即可。
  • 如果需要打出可執行的 Jar 包,則需要配置運行的主類入口,在 pom 檔案中添加元素,在其中添加插件配置並且添加assembly插件配置,如下:
				<build>
						<plugins>
							<plugin>
								<artifactId> maven-assembly-plugin </artifactId>
								<configuration>
				<!--       表示需要使用專案中依賴的jar             -->
									<descriptorRefs>
										<descriptorRef>jar-with-dependencies</descriptorRef>
									</descriptorRefs>
				<!--                   如果需要可執行的jar -->
									<archive>
										<manifest>
										<!--在這裡把要運行的類填進來。 -->
											<mainClass>com.testing.class12</mainClass>
										</manifest>
									</archive>
								</configuration>
								<executions>
									<execution>
										<id>make-assembly</id>
										<phase>package</phase>
										<goals>
											<goal>single</goal>
										</goals>
									</execution>
								</executions>
							</plugin>
						</plugins>
					</build>
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。