Это является обычным явлением, особенно в среде, где ассортимент продукции довольно велик, чтобы поддерживать несколько версий Maven. Подобно наличию поддержки нескольких версий Java, вы можете создать скрипт, который будет отслеживать и изменять вашу среду соответствующим образом. Я использую Mac, поэтому понятие механизма jEnv - это то, что я использую для Java. В Windows можно использовать аналогичную концепцию, хотя для правильной настройки параметров пути потребуется некоторое кодирование.
Вот сценарий bash, который я использую для быстрого изменения времени выполнения Maven. Это не так полно, как jEnv, но он работает для меня, поэтому, возможно, он может работать на вас. Отрегулируйте различные параметры, чтобы они соответствовали вашим различным установкам Maven и соответствующим образом обновили PATH, если в Windows. (Я знаю, что вы используете Mac, поэтому комментарий Windows для других может иметь эту проблему в Windows.)
Просто обновите свой ~/.bash_profile
, чтобы вызвать этот скрипт с соответствующими параметрами, если вам требуется значение по умолчанию. Затем, когда вам нужна другая версия Maven, вы можете просто выполнить сценарий, как
mvnEnv v33
И вуаля, вы только быстро изменили Maven версию! Если вы не знаете, какие версии Maven поддерживаются, просто выполните команду mvnEnv, и будет напечатан список допустимых версий. Тем не менее, вам нужно будет добавить любые новые версии Maven в скрипт для новой версии.
#!/bin/bash
echo "Setting the maven implementation version"
v22=/usr/local/Cellar/maven2/2.2.1/libexec/bin/mvn
v30=/usr/local/Cellar/maven30/3.0.5/libexec/bin/mvn
v31=/usr/local/Cellar/maven31/3.1.1/libexec/bin/mvn
v32=/usr/local/Cellar/maven32/3.2.5/libexec/bin/mvn
v33=/usr/local/Cellar/maven/3.3.9/libexec/bin/mvn
if [ -e /usr/local/bin/mvn ]
then
echo "Remove the maven soft link."
sudo rm /usr/local/bin/mvn
else
echo "Maven soft link could not be found."
fi
maven=$v22
if [ $# == 0 ] || [ -z "${!1// }" ]
then
echo "No Arguments supplied, using default $maven"
echo "Available versions:"
echo " v22 = 2.2.1"
echo " v30 = 3.0.5"
echo " v31 = 3.1.1"
echo " v32 = 3.2.5"
echo " v33 = 3.3.9"
elif [ -e ${!1} ]
then
echo "Setting maven to use ${!1} via $1"
maven=${!1}
else
echo "Using the default maven setting, provided argument [$1] is not recognized."
fi
echo "Creating new soft link to $maven";
sudo ln -s $maven /usr/local/bin/mvn
Сначала удалите 'M2_HOME', который не нужен и не должен использоваться. Просто добавьте папку bin вашего дистрибутива Maven в PATH, это все ... также работает на OS X ... Сообщение об ошибке, которое вы опубликовали, основано на использовании M2_HOME, который указывает на более старую/другую версию по сравнению с у вас есть в PATH ... – khmarbaise