Maven 3'ü nasıl kurarım?


33

Maven 2 depolarda, ancak Maven 3 değil. Maven 3'ü nasıl doğru bir şekilde kurabilirim? Bulduğum rehberler gerçekten düzgün çalışmıyor.

Natty kullanıyorum, ancak bunun hiçbir şeyi değiştirmeyeceğinden eminim.

Yanıtlar:


25

Maven3, Ubuntu 12.04’te varsayılandır (kesin)

Maven2, 11.10 depolarındaki sonuncusu.

Maven3 için PPA'lar oldukça az gözüküyor - işte maverick için bir tane - en son sürüm mevcut olmasa da.

En iyi tavsiye, dağıtım sürümünüz için uygun olan kararlı sürümde kalmaktır.

Ancak, kendinizi güncel tutmak istiyorsanız, kodu indirip kurmak çok basittir.

.Tar.gz dosyasını buradan indirin ve aynı web sayfasındaki kurulum kılavuzunu izleyin


Adımlarımı yönlendirmek için beni bağladığınız depodaki paketi kullanmaya çalışacağım.
nickguletskii

Doğru, bu işe yarıyor. Teşekkürler - Dosyaları arşivden manuel olarak çıkarttım ve / usr / share / maven3 / içindeki her şeyi tar ile değiştirdim.
nickguletskii

Bunu denedim ama işe yaramadı. terminali kapattıktan sonra mvn komutunu tanıyamadı
user962206

@ user962206 - lütfen yeni bir soru sorun.
fossfreedom


25

İşte 64 bit Ubuntu 11.10'da benim için iyi çalışan bir maven3 PPA

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

Maven2 zaten kanonik repolardan kurulu ise, bunun yerini almaz, ancak size bir mvn3 ikili dosyası verir.

İkilinin mvn3 yerine mvn adında olmasını tercih ediyorsanız, aşağıdakileri yapabilirsiniz:

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

Kaynak


4
Bu artık işe yaramadı.
KingOfHypocrites 9:15

4

Soru eski ama altın. Bugün bir çözüm bulmalıydım. İşte başlıyoruz. Güvenli olmayan bir depo kullanmaya gerek yoktur, çünkü maven3 zaten Ubuntu depolarına dahil edilmiştir. Ubuntu 14.04 LTS'deki bir çözüm şöyle olacaktır:

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

2. komutla, kullanılan sürümü ayarlamanız istenir. Maven2'nin bir parçası olmadığı yolu seçerek doğru dizinleri ayırt edebilirsiniz.

   *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

Benim durumumda 1 seçmek zorunda kaldım

Verilen komutla mvn -v, ayarın başarılı olup olmadığını ve doğru sürümü seçip seçmediğinizi doğrulayabilirsiniz. Aşağıda döndürülen değerlerin bir örneği var.

  ~$ 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"

Umarım bu size biraz yardımcı olur.


Bu sadece 3.0.5 (2016-02-05) verir, ancak 3.3.x'i istiyorum - Bunu elde etmenin yolu yok mu?
Kajetan Abt

2

Sadece Maven + 'ı yüklememesi gereken bir yeni betiği yazdım, onu bir bölmeye ekledik, ancak VirtualBox konuğu olarak Ubuntu kullanıyorsanız ve mevcut olan /. ayarlar.

Maven, Windows veya Unix üzerinde çalışıyorsa aynı kalır, bu yüzden ikisi arasında da aynı Maven'i kullanabilirsiniz, bu VirtualBox kurulumunuzdur ...

PS. Paylaşılan klasörleri / usr / local / bin dizinine bağlayabilen / çıkarabilen betiklerin yapısına dikkat edin :)

#!/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

2

İşte bu sorunu çözebilecek olan maven3 PPA.

Kurulumu takip edin:

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

Ve şimdi maven3'ü yüklediniz :

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"

Başlatma Çubuğuna Bağlantı



1

Yükseltildi, ancak sınıf hatası buldum. Bunu düzeltmek için:

Çeşitli kombinasyonları denemeye biraz zaman ayırdıktan sonra bunun, ortam değişkenlerimde hem M2_HOME hem de M3_HOME ayarlamamı sağladığımı öğrendim. bazıları için zaman.


BTW: M2_HOME ubuntu'dan kaldırıldı: see / etc / environment
RobAu

0

Maven resmi sitesinden maven'i indirin ve çıkartın.

Uygulama dizinini / usr / local konumuna taşı

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

Mvn'nin evrensel erişimi için / usr / bin içinde yumuşak bir link oluşturun.

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

Mvn kurulumunu doğrula

mvn --version

0

Provenans güvencesine sahip olmadığınız bir PPA ( kişisel paket arşivi) konusunda rahat değilseniz, bu bir alternatiftir.

Güvenlik açısından, nereden geldiğini bilmiyorsanız, yüklemeyin.

Bağlantılı makalemde bilinen ve güvenilir bir kaynak olan apache'den en yeni dosyayı alıyorum. En son sürümü alabilirsiniz

maven'ın en son sürümünü
    son = $ (kıvrılma http://www-us.apache.org/dist/maven/maven-3/ | tac | sed -ne 's / [^ 0-9] * \ (\ ([0-9] \. \) \ {0,3 \} [0-9] \). * / \ 1 / p '| kafa -1)
\#indir
    http://www-us.apache.org/dist/maven/maven-3/$latest/binaries/apache-maven-$latest-bin.tar.gz

sonra kur

\ # Paketini aç
    sudo tar -zxf apache-maven- $ en son-bin.tar.gz -C / usr / yerel /
\ # ona bir sym bağlantısı oluştur
    sudo ln -s / usr / yerel / apache-maven- $ en son / bin / mvn / usr / bin / mvn

yukarıdaki bağlantıda ve gönderimde belirtildiği gibi


1
Lütfen aynı cevabı birden fazla soruya göndermeyin. Aynı bilgi her iki soruyu da gerçekten yanıtlarsa, bir soru (genellikle yeni olanı) diğerinin kopyası olarak kapatılmalıdır. Bunu kopya olarak kapatmak için oy vererek veya bunun için yeterli itibarınız yoksa , bunun bir kopya olduğunu belirtmek için bir bayrak yükselterek belirtebilirsiniz. Aksi takdirde cevabınızı bu soruya göre uyarlayın ve aynı cevabı birden fazla yere yapıştırmayın.
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.