<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          把 Maven 提交到項目?Maven Wrapper的使用與好處

          共 8120字,需瀏覽 17分鐘

           ·

          2024-04-18 09:16

          歡迎點擊藍色文字關注公眾號,文章每周更新

          杭州西湖(2024年4月1日)

          前言

          不知道你有沒有發(fā)現(xiàn),如果使用 https://start.spring.io/ 或者使用 IDEA 創(chuàng)建一個 Spring Boot 項目,生成的文件列表中或有 mvnw 和 mvnw.cmd 兩個命令文件。如果細心的同學查看隱藏目錄,還會發(fā)現(xiàn)一個 .mvn 文件夾,那么這幾個文件是干嘛的呢?這篇文章介紹它的相關知識。

          ├── .gitignore
          ├── .mvn -> 關注
          │   └── wrapper
          │       ├── maven-wrapper.jar -> 關注
          │       └── maven-wrapper.properties -> 關注
          ├── HELP.md
          ├── mvnw    -> linux 命令文件
          ├── mvnw.cmd -> windows 命令文件
          ├── pom.xml
          └── src
              ├── main
              │   ├── java/com/wdbyte/com/springbootdemo/SpringbootdemoApplication.java
              │   └── resources
              │       ├── application.properties
              │       ├── static
              │       └── templates
              └── test/java/com/wdbyte/com/springbootdemo/SpringbootdemoApplicationTests.java

          Maven Wrapper 是什么

          上面提到的 mvnw 命令,它的全稱是 Maven Wrapper,這是 Maven 提供的一個非常有用的工具,它會自動下載指定版本的 Maven 用于項目構建,而且開發(fā)者自由配置 Maven 版本,以此提供一致的構建體驗。

          mvnw 的命令使用體驗和 mvn 完全一致,只需要把 mvn 命令換成 mvnw ,你可以在有 mvnw 文件的 Spring Boot 項目中進行測試。

          ./mvnw --version
          Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
          Maven home: /Users/darcy/.m2/wrapper/dists/apache-maven-3.9.5-bin/32db9c34/apache-maven-3.9.5
          Java version: 21, vendor: Oracle Corporation, runtime: /Users/darcy/develop/jdk-21.jdk/Contents/Home
          Default locale: zh_CN_#Hans, platform encoding: UTF-8
          OS name: "mac os x", version: "14.0", arch: "x86_64", family: "mac"

          注:windows 環(huán)境請使用 mvnw.cmd

          Maven Wrapper 官網(wǎng):https://maven.apache.org/wrapper/

          Maven Wrapper 使用場景

          設想一下,如果所在的團隊同時維護多個項目,不同的項目使用的 JDK 版本不相同,使用的 Maven 版本也不相同,那么為了支持多項目開發(fā),為了構建運行效果一致,你可能需要在本地管理多個 Maven 版本,這會非常繁瑣,而 Maven Wrapper 可以輕松的解決這個問題。

          Maven Wrapper 的引入解決了下面幾個問題:

          • 版本一致性:通過在 mvnw 配置中指定 Maven 版本,確保所有開發(fā)人員和持續(xù)集成環(huán)境使用相同的 Maven 版本。

          • 簡化設置:新團隊成員或 CI 環(huán)境不需要預先安裝 Maven,直接運行 mvnw 命令就如安裝了 mvn 一樣,從而簡化了項目的初始設置和配置。

          • 跨平臺:Wrapper 是跨平臺的,無論是在 Windows 還是在 Unix-like 系統(tǒng)上,都可以以相同的方式執(zhí)行。

          使用 Maven Wrapper 的好處簡單的說,可以是 “如果想要使用不同的 Maven 版本進行項目構建,只需在項目中存放一個腳本文件,而不是在本地安裝不同的 Maven 版本”。

          Maven Wrapper 使用方式

          自動生成

          如果本地機器已經(jīng)安裝了 Maven ,那么可以在指定項目中通過命令生成 mvnw 命令。

          要在現(xiàn)有項目中引入 Maven Wrapper,需要執(zhí)行如下命令:

          mvn -N wrapper:wrapper

          也可以指定 maven 版本。

          mvn -N wrapper:wrapper -Dmaven=3.9.5

          選項 -N 參數(shù)表示非遞歸,因此 Maven Wrapper 只會在項目的當前目錄生成,如果項目中有子模塊,那么則不會作用到子模塊中。

          下面我在一個空的 Spring Boot 項目中進行測試。

          一個沒有 mvnw 的 Spring Boot 項目:

          ls -l -a
          total 16
          -rw-r--r--@   1 darcy  staff   395  4 16 21:44 .gitignore
          -rw-r--r--@   1 darcy  staff  1249  4 16 21:44 pom.xml
          drwxr-xr-x@   4 darcy  staff   128  4 16 21:44 src
          drwxr-xr-x   11 darcy  staff   352  4 16 21:50 target

          使用 mvn -N wrapper:wrapper 生成 mvnw。

          mvn wrapper:wrapper
          [INFO] Scanning for projects...
          ... 省略日志
          [INFO] -------------------< com.wdbyte.com:springbootdemo >--------------------
          [INFO] Building springbootdemo 0.0.1-SNAPSHOT
          [INFO] --------------------------------[ jar ]---------------------------------
          [INFO]
          [INFO] --- maven-wrapper-plugin:3.2.0:wrapper (default-cli) @ springbootdemo ---
          ....省略日志
          [INFO] Unpacked bin type wrapper distribution org.apache.maven.wrapper:maven-wrapper-distribution:zip:bin:3.2.0
          [INFO] Configuring .mvn/wrapper/maven-wrapper.properties to use Maven 3.6.3 and download from http://mvnrepo.alibaba-inc.com/mvn/repository
          [INFO] ------------------------------------------------------------------------
          [INFO] BUILD SUCCESS
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time:  20.518 s
          [INFO] Finished at: 2024-04-16T22:36:16+08:00
          [INFO] ------------------------------------------------------------------------

          查看目錄已經(jīng)生成。

          ls -l -a
          -rw-r--r--@   1 darcy  staff    395  4 16 21:44 .gitignore
          drwxr-xr-x    3 darcy  staff     96  3  8  2023 .mvn
          -rwxr-xr-x    1 darcy  staff  11289  3  8  2023 mvnw
          -rw-r--r--    1 darcy  staff   7796  3  8  2023 mvnw.cmd
          -rw-r--r--@   1 darcy  staff   1249  4 16 21:44 pom.xml
          drwxr-xr-x@   4 darcy  staff    128  4 16 21:44 src
          drwxr-xr-x   11 darcy  staff    352  4 16 21:50 target
          查看版本
          ./mvnw --version
          Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
          Maven home: /Users/darcy/.m2/wrapper/dists/apache-maven-3.6.3-bin/c7849ca4/apache-maven-3.6.3
          Java version: 21, vendor: Oracle Corporation, runtime: /Users/darcy/develop/jdk-21.jdk/Contents/Home
          Default locale: zh_CN_#Hans, platform encoding: UTF-8
          OS name: "mac os x", version: "14.0", arch: "x86_64", family: "mac"

          生成的文件說明:

          1. 1. mvnw 和 mvnw.cmd 腳本,分別用于 Unix/Linux 和 Windows 環(huán)境。

          2. 2. .mvn/wrapper/mavenwrapper.jar 是 Maven Wrapper 運行時所需的 Jar 文件。 .mvn/wrapper/maven-wrapper.properties 是配置文件,可以配置 Maven 版本。

          然后就可以使用 mvnw 代替 mvn 構建或運行項目了。

          ./mvnw spring-boot:run

          手動復制

          通過將上面生成的文件和文件夾復制到一個新項目中,就可以拷貝一份 Maven Wrapper 。

          需要拷貝的文件如下:

          ./
          ├── .mvn
          │   └── wrapper
          │       ├── maven-wrapper.jar
          │       └── maven-wrapper.properties
          ├── mvnw
          ├── mvnw.cmd

          手動配置

          直接修改 maven-wrapper.properties 中的內(nèi)容可以修改 Maven 版本,如修改 Maven 版本為 3.9.5,只需要修改 distributionUrl 的值為指定版本的下載地址。

          cat .mvn/wrapper/maven-wrapper.properties
          distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip
          wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar

          Maven Wrapper 總結

          Maven Wrapper 是一個非常好用的工具,雖然它不是項目的一部分,但是如果把它放到項目中,不僅簡化了項目的構建環(huán)境配置過程,還為項目構建減少了潛在的問題。如果你還沒有在你的項目中使用 Maven Wrapper,不妨考慮嘗試一下。將 Maven Wrapper 集成到項目中是一個不錯的方式,這樣可以跟隨項目源碼一起管理,可以讓所有使用該項目的同學都能得到相同的構建結果。

          集成步驟通常如下:

          1. 1. 在項目根目錄執(zhí)行前面提到的命令添加 Maven Wrapper。

          2. 2. 提交生成的 mvnwmvnw.cmd 和 .mvn/ 目錄到版本控制系統(tǒng)。

          3. 3. 更新項目文檔,指導團隊成員使用 ./mvnw 替代 mvn

          參考

          1. 1. https://maven.apache.org/wrapper

          本文還收錄于:github.com/niumoo/JavaNotes

          還收錄于網(wǎng)站:https://www.wdbyte.com

          ---- END ----

          "Hello world : ) 我是阿朗,這里記錄大廠技術工具人的學習、生活與見聞"


          一個「點贊」,一段時光
          ??


          瀏覽 144
          10點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          10點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲 日韩 中文字幕 | 快一本码道在线播放视频国产 | 日皮视频免费观看 | 天天草人人草 | 豆花视频一区二区二区 |