我們使用Maven時,基本上只會用到mvn這一個命令。

mvnw是Maven Wrapper的縮寫。因為我們安裝Maven時,默認情況下,系統所有項目都會使用全局安裝的這個Maven版本。但是,對於某些項目來説,它可能必須使用某個特定的Maven版本,這個時候,就可以使用Maven Wrapper,它可以負責給這個特定的項目安裝指定版本的Maven,而其他項目不受影響。該工具可以在大型、多人協作的項目統一Maven的版本,避免因為不一致造成意想不到的bug

簡單地説,Maven Wrapper就是給一個項目提供一個獨立的,指定版本的Maven給它使用。

安裝Maven Wrapper

安裝Maven Wrapper最簡單的方式是在項目的根目錄(即pom.xml所在的目錄)下運行安裝命令:

mvn -N io.takari:maven:0.7.6:wrapper

它會自動使用最新版本的Maven。注意0.7.6是Maven Wrapper的版本。最新的Maven Wrapper版本可以去官方網站查看。

如果要指定使用的Maven版本,使用下面的安裝命令指定版本,例如3.3.3

mvn -N io.takari:maven:0.7.6:wrapper -Dmaven=3.3.3

安裝後,查看項目結構:

my-project
├── .mvn
│   └── wrapper
│       ├── MavenWrapperDownloader.java
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   └── resources
    └── test
        ├── java
        └── resources

發現多了mvnwmvnw.cmd.mvn目錄,我們只需要把mvn命令改成mvnw就可以使用跟項目關聯的Maven。例如:

mvnw clean package

在Linux或macOS下運行時需要加上./

./mvnw clean package

Maven Wrapper的另一個作用是把項目的mvnwmvnw.cmd.mvn提交到版本庫中,可以使所有開發人員使用統一的Maven版本。

 

小結

使用Maven Wrapper,可以為一個項目指定特定的Maven版本。