Когда я создал приложение загрузки Spring, я мог видеть файлы mvnw
и mvnw.cmd
в корне проекта. Какова цель этих двух файлов?
Какова цель файлов mvnw и mvnw.cmd?
Ответ 1
Эти файлы из оболочки Maven. Он работает аналогично оболочке Gradle.
Это позволяет запускать проект Maven без установки и представления Maven в пути. Он загружает правильную версию Maven, если он не найден (насколько я знаю по умолчанию в вашем домашнем каталоге пользователя).
Файл mvnw
предназначен для Linux (bash), а mvnw.cmd
- для среды Windows.
Для создания или обновления всех необходимых файлов Maven Wrapper выполните следующую команду:
mvn -N io.takari:maven:wrapper
Чтобы использовать другую версию maven, вы можете указать версию следующим образом:
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
Обе команды требуют maven для PATH
(добавьте путь к maven bin
в Path
для системных переменных), если в вашем проекте уже есть mvnw, вы можете использовать ./mvnw
вместо mvn
в командах.
Ответ 2
Команда 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
run:
mvn io.takari:maven:wrapper -Dmaven=3.3.9
Ответ 3
Безусловно, лучшим вариантом в настоящее время является использование контейнера 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 "[email protected]"