Jak zainstalować Maven 3?

33

Maven 2 znajduje się w repozytoriach, ale nie w Maven 3. Jak poprawnie zainstalować Maven 3? Znalezione przeze mnie przewodniki nie działają właściwie.

Używam Natty, ale jestem pewien, że nic to nie zmieni.

nickguletskii
źródło

Odpowiedzi:

25

Maven3 jest domyślny w Ubuntu 12.04 (dokładnie)

Maven2 jest najnowszy w repozytoriach dla 11.10.

PPA dla maven3 wydają się raczej skąpe - tutaj jest jeden dla maverick - choć nie bardzo najnowsza wersja jest dostępna.

Najlepszą radą jest pozostanie w stabilnej wersji dostępnej dla twojej wersji dystrybucyjnej.

Jeśli jednak chcesz być na bieżąco, pobierz kod i zainstaluj go samodzielnie.

Pobierz plik .tar.gz tutaj i postępuj zgodnie ze wskazówkami dotyczącymi instalacji na tej samej stronie internetowej

fossfreedom
źródło
Spróbuję użyć pakietu w repozytorium, do którego mnie połączyłeś, aby poprowadzić moje kroki.
nickguletskii
Racja, to działa. Dzięki - ręcznie wyodrębniłem pliki z archiwum i zastąpiłem wszystko w / usr / share / maven3 / plikami z tar.
nickguletskii
próbowałem tego, ale to nie zadziałało. po zamknięciu terminalu nie mógł rozpoznać polecenia mvn
użytkownik962206
@ user962206 - zadaj nowe pytanie.
fossfreedom
Zrobiłem już askubuntu.com/questions/310059/…
user962206
25

Oto PPA maven3, który działał dla mnie dobrze na 64-bitowym Ubuntu 11.10

sudo add-apt-repository ppa:natecarlson/maven3
sudo apt-get update && sudo apt-get install maven3

Jeśli masz już zainstalowany maven2 z repozytoriów kanonicznych, nie zastąpi go, ale da ci plik binarny mvn3.

Jeśli wolisz mieć plik binarny o nazwie mvn zamiast mvn3, możesz po prostu wykonać następujące czynności:

sudo ln -s /usr/bin/mvn3 /usr/bin/mvn

Źródło

realgt
źródło
4
To wydaje się już nie działać.
KingOfHypocrites,
4

Pytanie jest stare, ale złote. Musiałem dziś znaleźć rozwiązanie. No to ruszamy. Nie ma potrzeby korzystania z niezabezpieczonego repozytorium, ponieważ maven3 jest już uwzględniony w repozytoriach Ubuntu. Rozwiązaniem w Ubuntu 14.04 LTS będzie:

  • sudo apt-get install maven
  • sudo update-alternatives --config mvn

Drugim poleceniem zostaniesz poproszony o ustawienie używanej wersji. Możesz rozróżnić prawidłowe katalogi, wybierając ścieżkę, w której maven2 NIE jest jej częścią.

   *0    /usr/share/maven2/bin/mvn   200       Auto-Modus
    1    /usr/share/maven/bin/mvn    150       manueller Modus
    2    /usr/share/maven2/bin/mvn   200       manueller Modus

W moim przypadku musiałem wybrać 1

Za pomocą wydanego polecenia mvn -vmożesz sprawdzić, czy ustawienie się powiodło i czy wybrałeś poprawną wersję. Poniżej znajduje się przykład zwracanych wartości.

  ~$ mvn -version
  Apache Maven 3.0.5
  Maven home: /usr/share/maven
  Java version: 1.7.0_75, vendor: Oracle Corporation
  Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
  Default locale: de_DE, platform encoding: UTF-8
  OS name: "linux", version: "3.13.0-45-generic", arch: "amd64", family: "unix"

Mam nadzieję, że to ci trochę pomoże.

Semo
źródło
To daje tylko 3.0.5 (2016-02-05), ale chciałbym 3.3.x - Nie ma sposobu na uzyskanie tego?
Kajetan Abt
2

Stworzyłem nowy skrypt, który powinien nie tylko zainstalować Maven + dodać go do bin, ale również uruchamiać, jeśli używasz Ubuntu jako gościa VirtualBox, a następnie próbuje zamontować istniejący folder „.m2” i maven, który może / może nie zawierać istniejącego ustawienia.

Maven pozostaje taki sam, jeśli działa w systemie Windows lub Unix, więc możesz używać tego samego Maven między obiema, to jest konfiguracja VirtualBox ...

PS. Zwróć uwagę na kompilację skryptów, które mogą montować / odmontowywać foldery współdzielone z / usr / local / bin :)

#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:."
export PATH

#Modify these variables as needed...
tempWork=/tmp/work
defaultStartScript=/etc/init.d/rc.local
defaultMaven=3.0.3
locBin=/usr/local/bin
mavenUsrLib=/usr/lib/maven

mkdir -p $mavenUsrLib
mkdir -p $HOME/.m2

read -p "Please [Enter] full path name of your local startup script ($defaultStartScript is the default). Please
make sure on this before providing a value by consulting documentation for your system:" locStartScript
locStartScript=${locStartScript:-$defaultStartScript}

read -p "Please [Enter] Maven Version ($defaultMaven is default):" mavenVersion
mavenVersion=${mavenVersion:-$defaultMaven}


if [ ! -f $locStartScript ]
then
    echo "The file you provided could not be found. Remember to include the full path and try again. Exiting in 7 secs..."
    sleep 7
    exit 1
fi

mkdir -p /$tempWork
cd /$tempWork

sudo wget http://mirrors.powertech.no/www.apache.org/dist//maven/binaries/apache-maven-$mavenVersion-bin.tar.gz
tar -zxvf ./*

#Move it to a more logical location
sudo mv -f ./apache-maven-$mavenVersion $mavenUsrLib/

#If you have Maven on Windows and use VirtualBox, you can set up the maven to be a virtualbox shared folder.
#The name must match the name used below (ignore if irrelevant to you).


if [ -f /sbin/mount.vboxsf ]
then
    sudo /sbin/umount $HOME/.m2
    sudo /sbin/umount $mavenUsrLib
    sudo /sbin/mount.vboxsf .m2 $HOME/.m2
    sudo /sbin/mount.vboxsf maven $mavenUsrLib
fi

if mountpoint -q $HOME/.m2 &&  mountpoint -q $mavenUsrLib
then
#Add it to the start script to automate process...
    sudo sed -ie '$d' $locStartScript
if ! grep "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" $locStartScript
then
    echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $locStartScript
fi

if ! grep "sudo /sbin/mount.vboxsf maven $mavenUsrLib" $locStartScript
then
    echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $locStartScript
fi
    echo "exit 0" | sudo tee -a $locStartScript
    sudo chmod +x $locStartScript

#Create a mount and unmount script file...
    rm -rf $tempWork/*
    echo '#!/bin/bash' > $tempWork/maven-mount.sh
    echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" >> $tempWork/maven-mount.sh
    echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" >> $tempWork/maven-mount.sh
    echo "echo 'mounted maven'" >> $tempWork/maven-mount.sh
    echo "exit 0" >> $tempWork/maven-mount.sh

    echo '#!/bin/bash' > $tempWork/maven-umount.sh
    echo "sudo umount $HOME/.m2" >> $tempWork/netbeans-umount.sh
    echo "sudo umount $mavenUsrLib" >> $tempWork/netbeans-umount.sh
    echo "echo 'unmounted maven'" >> $tempWork/maven-mount.sh
    echo 'exit 0' >> $tempWork/maven-umount.sh

#Script for mounting ALL VirtualBox shared solders....
#If there isn't one create one...
if [ ! -f $locBin/mount-all-from-host.sh ]
then
    echo '#!/bin/bash' > $tempWork/mount-all-from-host.sh
    echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $tempWork/mount-all-from-host.sh
    echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $tempWork/mount-all-from-host.sh
    echo "exit 0" | sudo tee -a $tempWork/mount-all-from-host.sh

#Otherwise if there is one, but no mount, add one...
elif ! grep "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" $locBin/mount-all-from-host.sh
then
    sudo sed -ie '$d' $locBin/mount-all-from-host.sh
    echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $locBin/mount-all-from-host.sh
    echo "exit 0" | sudo tee -a $locBin/mount-all-from-host.sh

elif ! grep "sudo /sbin/mount.vboxsf maven $mavenUsrLib" $locBin/mount-all-from-host.sh
then
    sudo sed -ie '$d' $locBin/mount-all-from-host.sh
    echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $locBin/mount-all-from-host.sh
    echo "exit 0" | sudo tee -a $locBin/mount-all-from-host.sh

fi

#Script for unmounting ALL VirtualBox shared folders...
#If there isn't one create one...
if [ ! -f $locBin/umount-all-from-host.sh ]
then
    echo '#!/bin/bash' > $tempWork/umount-all-from-host.sh
    echo "sudo umount -a -t vboxsf" | sudo tee -a $tempWork/umount-all-from-host.sh
    echo "echo 'unmounted all VirtualBox shared folders'" | sudo tee -a $tempWork/umount-all-from-host.sh
    echo "exit 0" | sudo tee -a $tempWork/umount-all-from-host.sh
fi

    sudo chmod +x $tempWork/*
    sudo mv -f $tempWork/*.sh $locBin/
    rm -rf $tempWork
fi

sudo ln -f -s $mavenUsrLib/apache-maven-$mavenVersion/bin/* /usr/bin/
sudo rm -rf $tempWork
sudo reboot

exit 0
thejartender
źródło
2

Oto PPA maven3, który może rozwiązać ten problem.

Śledź instalację:

sudo apt-get purge maven maven2 maven3
sudo add-apt-repository ppa:andrei-pozolotin/maven3
sudo apt-get update && sudo apt-get install maven3

A teraz zainstalowałeś maven3 :

nazar@lelyak-desktop ~ $ mvn -version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T14:57:37+03:00)
Maven home: /usr/share/maven3
Java version: 1.7.0_80, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-24-generic", arch: "amd64", family: "unix"

Link do Launchpada

nazar_art
źródło
1
Nie udało się pobrać ppa.launchpad.net/natecarlson/maven3/ubuntu/dists/trusty/main/… 404 Nie znaleziono
siedliska
1

Uaktualniłem, ale wystąpił błąd nie znaleziony w klasie. Aby to naprawić:

Po spędzeniu czasu na próbowaniu różnych kombinacji, odkryłem, że dzieje się tak, ponieważ mam zarówno M2_HOME, jak i M3_HOME ustawione w moich zmiennych środowiskowych. Po usunięciu M2_HOME ze zmiennych środowiskowych mogę przywrócić to do działania. Może to może uratować niektóre poważne czas na kogoś.

RobAu
źródło
BTW: aby usunąć M2_HOME z Ubuntu: patrz / etc / environment
RobAu
0

Pobierz maven z oficjalnej strony maven i wypakuj.

Przenieś katalog aplikacji do / usr / local

sudo cp -R apache-maven-X.X.X /usr/local

Utwórz miękki link w / usr / bin, aby uzyskać uniwersalny dostęp do mvn

sudo ln -s /usr/local/apache-maven-X.X.X/bin/mvn /usr/bin/mvn

Sprawdź instalację mvn

mvn --version
Thirumal
źródło
0

Jeśli nie czujesz się komfortowo z PPA ( archiwum paczek osobistych ), w którym nie masz pewności co do pochodzenia, jest to alternatywa.

Z punktu widzenia bezpieczeństwa, jeśli nie wiesz, skąd pochodzi, nie instaluj go.

W moim linkowanym artykule pobieram najnowszy plik z apache, który jest znanym i zaufanym źródłem. Możesz pobrać najnowszą wersję

\ #identify najnowszej wersji maven
    latest = $ (curl http://www-us.apache.org/dist/maven/maven-3/ | tac | sed -ne 's / [^ 0-9] * \ (\ ([0-9] \. \) \ {0,3 \} [0-9] \). * / \ 1 / p '| head -1)
\#Pobierz to
    wget http://www-us.apache.org/dist/maven/maven-3/$latest/binaries/apache-maven-$latest-bin.tar.gz

następnie zainstaluj go z

\ # Rozpakuj
    sudo tar -zxf apache-maven- $ latest-bin.tar.gz -C / usr / local /
\ # stwórz link sym do niego
    sudo ln -s / usr / local / apache-maven- $ latest / bin / mvn / usr / bin / mvn

jak opisano w powyższym linku i w moim poście na

TomRed
źródło
1
Nie zamieszczaj tej samej odpowiedzi na wiele pytań. Jeśli ta sama informacja naprawdę odpowiada na oba pytania, to jedno pytanie (zwykle nowsze) powinno zostać zamknięte jako duplikat drugiego. Możesz to wskazać, głosując, aby zamknąć go jako duplikat lub, jeśli nie masz wystarczającej reputacji, podnieść flagę wskazującą, że jest to duplikat. W przeciwnym razie dostosuj swoją odpowiedź na to pytanie i nie wklejaj tej samej odpowiedzi w wielu miejscach.
DavidPostill