Команда mvn не найдена в OSX Mavrerick

Прежде чем отметить это как дубликат, я просмотрел эти сообщения, но ничего не помогло. 'mvn' не распознается как внутренняя или внешняя команда, Получение - bash: mvn: команда не найдена, Не удается получить доступ к команде mvn из командной строки?

Некоторые из них относятся к окнам и не помогают. Несколько из них на Mac OS X дали предложения, которые я пробовал, но не помогли.

Что я пробовал (это именно то, что предлагает Maven):

Извлеките архив распространения, то есть apache-maven-3.1.1-bin.tar.gz в каталог, который вы хотите установить Maven 3.1.1. Эти инструкции Предположим, вы выбрали /usr/local/apache -maven. Подкаталог apache-maven-3.1.1 будет создан из архива. В команде терминал, добавьте переменную среды M2_HOME, например. экспорт M2_HOME =/USR/локальные/Apache-Maven/апаша-Maven-3.1.1. Добавьте M2 переменная среды, например. экспорт M2 = $M2_HOME/bin. Необязательно: добавьте MAVEN_OPTS, чтобы указать свойства JVM, например. экспорт MAVEN_OPTS = "- Xms256m -Xmx512m". Эта переменная среды может использоваться чтобы предоставить дополнительные опции для Maven. Добавьте переменную среды M2 в свою путь, например. export PATH = $M2: $PATH. Убедитесь, что для JAVA_HOME установлено значение местоположение вашего JDK, например. экспорт JAVA_HOME =/usr/java/jdk1.5.0_02 и что $JAVA_HOME/bin находится в переменной среды PATH. Запустить mvn --версия, чтобы убедиться, что она правильно установлена.

Я вижу, что на terminal, который я использовал для установки, он отлично работает. У меня нет этой проблемы. но когда я попробовал новый terminal, я получил command not found.

Я также добавил export PATH=$M2 в мой .bashrc, я сделал source, а затем перезапустил терминал, но он не помог.

может кто-нибудь предложить, как сделать его доступным во всех сеансах терминала?

Спасибо

Ответ 1

Попробуйте выполнить следующие действия, если они могут помочь:

Поскольку ваша установка работает на установленном терминале, все exports, которые вы сделали, работают с current bash and its child process. но не генерируется в новый terminals.

env переменные теряются, если сеанс закрыт; используя .bash_profile, вы можете сделать его доступным во всех сеансах, поскольку, когда начинается сеанс bash, он запускает его .bashrc and .bash_profile

Теперь выполните следующие действия и посмотрите, помогает ли это:

  • введите env | grep M2_HOME на работающий терминал. Это должно дать что-то вроде

    M2_HOME =/USR/локальные/Apache-Maven/апаша-Maven-3.1.1

  • введите env | grep JAVA_HOME, как показано ниже:

    JAVA_HOME =/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Содержание/Главная

Теперь у вас есть PATH для M2_HOME и JAVA_HOME.

Если вы просто выполните ls /usr/local/apache-maven/apache-maven-3.1.1/bin, вы увидите там двоичный файл mvn. Все, что вам нужно сделать, это указать на это место каждый раз, используя PATH. поскольку bash выполняет поиск во всем пути к каталогу, указанном в PATH, он найдет mvn.

  • теперь откройте .bash_profile, если у вас его нет, просто создайте

    vi ~/.bash_profile

Добавьте следующее:

#set JAVA_HOME
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home
export JAVA_HOME


M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1
export M2_HOME

PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
export PATH
  • сохраните файл и введите source ~/.bash_profile. Эти шаги выполняют команды в файле .bash_profile, и теперь вы можете продолжить.

  • откройте новый терминал и введите mvn, который должен работать.

Ответ 2

Вот что сработало для меня.

Прежде всего, я проверил, установлена ​​ли переменная M2_HOME env | grep M2_HOME. У меня ничего.

Я знал, что у меня установлен Maven в папке "/usr/local/apache-maven-3.2.2", поэтому выполнение следующих трех шагов решило проблему для меня:

  • Установить переменную M2_HOME env

M2_HOME=/usr/local/apache-maven-3.2.2

  1. Установить переменную env M2

M2=$M2_HOME/bin

  1. Обновить PATH

export PATH=$M2:$PATH

Как уже упоминалось выше, вы можете сохранить эту последовательность в файле .bash_profile, если хотите, чтобы она выполнялась автоматически.