Какова цель mvnw и mvnw.cmd-файлов?


когда я создал приложение Spring Boot, я мог видеть mvnw и mvnw.cmd файлы в корне проекта. Какова цель этих двух файлов?

3 137

3 ответа:

эти файлы из обертка Maven. Он работает аналогично Gradle wrapper.

это позволяет запускать проект Maven без установки Maven и присутствия на пути. Он загружает правильную версию Maven, если она не найдена (насколько я знаю по умолчанию в вашем домашнем каталоге пользователя).

The mvnw файл для Linux (bash) и mvnw.cmd для среды Windows.


создать или обновите все необходимые файлы оболочки Maven выполните следующую команду:

mvn -N io.takari:maven:wrapper

для использования другой версии maven вы можете указать версию следующим образом:

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

обе команды требуют maven on PATH, если у вас уже есть mvnw в вашем проекте вы можете использовать ./mvnw вместо mvn в команды.

команда mvnw использует Maven, который по умолчанию загружается на ~/.m2/wrapper при первом использовании.

URL с Maven указывается в каждом проекте по адресу .mvn/wrapper/maven-wrapper.properties:

distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip

чтобы обновить или изменить версию Maven, вызовите следующее (помните о --non-recursive для многомодульных проектов):

./mvnw io.takari:maven:wrapper -Dmaven=3.3.9 

или просто изменить .mvn/wrapper/maven-wrapper.properties вручную.

чтобы создать обертку с нуля, используя Maven (вам нужно иметь его уже в PATH беги:

mvn io.takari:maven:wrapper -Dmaven=3.3.9 

безусловно, лучшим вариантом в настоящее время было бы использование контейнера maven в качестве инструмента компоновщика. А mvn.sh скрипта вроде этого было бы достаточно:

#!/bin/bash
docker run --rm -ti \
 -v $(pwd):/opt/app \
 -w /opt/app \
 -e TERM=xterm \
 -v $HOME/.m2:/root/.m2 \
 maven mvn "$@"