Я пытаюсь собрать maven из исходного кода (в Ubuntu 12.04), следуя инструкции:
http://maven.apache.org/guides/development/guide-building-m2. html
Я установил предыдущую версию maven, используя
sudo apt-get install maven
Затем я проверил maven, используя:
git clone https://git-wip-us.apache.org/repos/asf/maven.git maven
Затем я построил maven, используя maven согласно к руководству по Apache, поэтому я перешел к проверочной версии maven и сделал:
sudo mvn install
казалось, что это работает нормально, без ошибок или чего-то еще, но когда я делаю
mvn -version
Мой вывод:
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_40, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk1.7.0_40/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.5.0-37-generic", arch: "amd64", family: "unix"
Это не версия, которую я проверил, а версия maven, которую я получил из apt-get. Что конкретно сделала установка mvn? Где он установил maven и как мне обновить команду mvn?
Я копался в выводе mvn-install. Кажется, он создает файлы JAR, например, некоторые из выходных данных:
[INFO] Installing /opt/maven/maven-core/target/maven-core-3.1-SNAPSHOT.jar to /root/.m2/repository/org/apache/maven/maven-core/3.1-SNAPSHOT/maven-core-3.1-SNAPSHOT.jar
[INFO] Installing /opt/maven/maven-core/pom.xml to /root/.m2/repository/org/apache/maven/maven-core/3.1-SNAPSHOT/maven-core-3.1-SNAPSHOT.pom
, если я перехожу в /root/.m2/repository/org/apache/maven/maven-core и делаю ls -la
Я вижу
drwxr-xr-x 9 root root 4096 Sep 25 15:31 .
drwxr-xr-x 33 root root 4096 Sep 25 15:31 ..
drwxr-xr-x 2 root root 4096 Sep 25 15:30 2.0
drwxr-xr-x 2 root root 4096 Sep 25 15:30 2.0.1
drwxr-xr-x 2 root root 4096 Sep 25 15:30 2.0.6
drwxr-xr-x 2 root root 4096 Sep 25 15:30 2.0.9
drwxr-xr-x 2 root root 4096 Sep 25 15:31 2.2.1
drwxr-xr-x 2 root root 4096 Sep 25 15:30 3.0
drwxr-xr-x 2 root root 4096 Sep 25 15:31 3.1-SNAPSHOT
Последняя запись кажется действительно подозрительной. Если я перехожу в каталог и перечисляю его содержимое, я вижу:
-rw-r--r-- 1 root root 557420 Sep 26 08:45 maven-core-3.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 7270 Sep 26 08:44 maven-core-3.1-SNAPSHOT.pom
-rw-r--r-- 1 root root 706 Sep 26 08:45 maven-metadata-local.xml
-rw-r--r-- 1 root root 186 Sep 26 08:45 _maven.repositories
Что отличается от содержимого
/root/.m2/repository/org/apache/maven/maven-core/3.0
. Это:
-rw-r--r-- 1 root root 6629 Sep 25 15:30 maven-core-3.0.pom
-rw-r--r-- 1 root root 40 Sep 25 15:30 maven-core-3.0.pom.sha1
-rw-r--r-- 1 root root 154 Sep 25 15:30 _maven.repositories
Хех. 99% там, но остановился у швейцара. Если вы имели в виду то, что сказали, проблема в том, что mvn install
не устанавливает mvn. Страницы руководства говорят, что у maven нет переключателя «установка». Это должно было напечатать «как это?» ошибка. Bad Maven.
Каноническая процедура сборки из источника происходит следующим образом из соответствующего каталога:
./configure
make
sudo make install
Сделать install (d'oh!). Обратите внимание на sudo, то есть корневые привилегии для вас, я уверен, что вы знаете.
Я никогда не создавал maven самостоятельно, но после этого последнего шага я должен ожидать найти новую программу где-нибудь в / usr / local. / usr / local / share, в этом случае? Если повезет, просто mvn
из командной строки должен найти новую после установки, и это, конечно, то, что вы хотите. Если нет, вам придется настроить переменную среды $ PATH и, возможно, конфигурацию поиска в библиотеке, но будем надеяться, что в этом нет необходимости.