ฉันจะติดตั้ง Maven 3 ได้อย่างไร


33

Maven 2 อยู่ในที่เก็บ แต่ไม่ใช่ Maven 3 ฉันจะติดตั้ง Maven 3 ได้อย่างถูกต้องได้อย่างไร แนวทางที่ฉันพบว่าทำงานไม่ถูกต้อง

ฉันใช้ Natty แต่ฉันแน่ใจว่านี่จะไม่เปลี่ยนแปลงอะไรเลย

คำตอบ:


25

Maven3 เป็นค่าเริ่มต้นใน Ubuntu 12.04 (แม่นยำ)

Maven2 เป็นเวอร์ชั่นล่าสุดในที่เก็บ 11.10

PPAs สำหรับ maven3 ดูค่อนข้างหายาก - นี่คือหนึ่งสำหรับผู้ไม่ฝักใฝ่ฝ่ายใด - แม้ว่าจะไม่ใช่เวอร์ชั่นล่าสุด

คำแนะนำที่ดีที่สุดคืออยู่กับรุ่นที่เสถียรสำหรับรุ่น distro ของคุณ

อย่างไรก็ตามหากคุณต้องการอัพเดทตัวเองเป็นเรื่องง่ายมากที่จะดาวน์โหลดรหัสและติดตั้งเอง

ดาวน์โหลดไฟล์. tar.gz จากที่นี่และปฏิบัติตามคำแนะนำการติดตั้งบนหน้าเว็บเดียวกัน


ฉันจะลองและใช้แพ็คเกจใน repo ที่คุณเชื่อมโยงฉันเพื่อแนะนำขั้นตอนของฉัน
nickguletskii

ใช่มันใช้งานได้ดี ขอบคุณ - ฉันแยกไฟล์จากไฟล์เก็บถาวรด้วยตนเองและแทนที่ทุกอย่างใน / usr / share / maven3 / ด้วยไฟล์จาก tar
nickguletskii

ลองใช้ แต่ไม่ได้ผล หลังจากปิดเครื่องเทอร์มินัลไม่สามารถจดจำคำสั่ง mvn ได้
user962206

@ user962206 - โปรดถามคำถามใหม่
fossfreedom


25

นี่คือ PPA maven3 ที่ทำงานได้ดีสำหรับฉันบน Ubuntu 64 บิต 11.10

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

หากคุณติดตั้ง maven2 แล้วจาก repos แบบ canonical สิ่งนี้จะไม่แทนที่ แต่ให้ไบนารี mvn3 แก่คุณ

หากคุณต้องการที่จะมีไบนารีที่เรียกว่า mvn แทน mvn3 คุณสามารถทำสิ่งต่อไปนี้:

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

แหล่ง


4
สิ่งนี้ดูเหมือนจะไม่ทำงานอีกต่อไป
KingOfHypocrites

4

คำถามเก่า แต่มีค่า ฉันต้องหาทางออกในวันนี้ ไปเลย. ไม่จำเป็นต้องใช้ที่เก็บข้อมูลที่ไม่ปลอดภัยเนื่องจากmaven3รวมอยู่ใน repos ของ Ubuntu แล้ว ทางออกที่ Ubuntu 14.04 LTS จะเป็นอย่างไร:

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

ด้วยคำสั่งที่ 2 คุณจะถูกขอให้ตั้งค่ารุ่นที่ใช้ คุณสามารถแยกไดเรกทอรีที่ถูกต้องโดยเลือกเส้นทางที่ maven2 ไม่ได้เป็นส่วนหนึ่งของมัน

   *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

ในกรณีของฉันฉันต้องเลือก1

ด้วยคำสั่งที่ออกให้mvn -vคุณสามารถตรวจสอบว่าการตั้งค่าสำเร็จหรือไม่และคุณเลือกรุ่นที่ถูกต้องหรือไม่ ด้านล่างคุณมีตัวอย่างของค่าที่ส่งคืน

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

หวังว่านี่จะช่วยคุณได้เล็กน้อย


นั่นให้เพียง 3.0.5 (2016-02-05) แต่ฉันต้องการ 3.3.x - ไม่มีทางได้รับ?
Kajetan Abt

2

ฉันได้สร้างสคริปต์ใหม่ที่ไม่เพียง แต่ติดตั้ง Maven + เพิ่มลงในถังขยะ แต่จะหยิบขึ้นมาถ้าคุณใช้ Ubuntu ในฐานะแขก VirtualBox จากนั้นพยายามติดตั้งโฟลเดอร์ '.m2' และ maven ที่มีอยู่ซึ่งอาจ / อาจไม่มีอยู่ การตั้งค่า

Maven ยังคงเหมือนเดิมถ้ามันทำงานบน Windows หรือ Unix ดังนั้นคุณสามารถใช้ Maven เดียวกันระหว่างทั้งสองนี่คือการตั้งค่า VirtualBox ของคุณ ...

PS สังเกตการสร้างสคริปต์ที่สามารถเมานต์ / unmount โฟลเดอร์ที่ใช้ร่วมกันจาก / 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

2

นี่คือ maven3 PPA ซึ่งสามารถแก้ไขปัญหานี้ได้

ติดตามการติดตั้ง:

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

และตอนนี้คุณได้ติดตั้ง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"

เชื่อมโยงไปยัง Launchpad


1
ไม่สามารถดึงข้อมูลppa.launchpad.net/natecarlson/maven3/ubuntu/dists/trusty/main/… 404 ไม่พบ
แหล่งที่อยู่อาศัย

1

ฉันอัปเกรดแล้วแต่ได้รับข้อผิดพลาด classnotfound ในการแก้ไขปัญหานี้:

หลังจากใช้เวลาหลายครั้งในการลองชุดค่าผสมต่าง ๆ ฉันพบว่านี่เป็นเพราะฉันมีทั้งชุด M2_HOME และ M3_HOME ในตัวแปรสภาพแวดล้อมของฉันเมื่อฉันลบ M2_HOME จากตัวแปรสภาพแวดล้อมของฉันฉันสามารถกลับมาทำงานได้อีกครั้ง เวลาสำหรับบางคน


BTW: เพื่อลบ M2_HOME จาก Ubuntu: ดู / etc / environment
RobAu

0

ดาวน์โหลด maven จากเว็บไซต์ทางการ maven และแตกไฟล์

ย้ายไดเร็กทอรีแอ็พพลิเคชันไปที่ / usr / local

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

สร้างลิงก์แบบนุ่มนวลใน / usr / bin สำหรับการเข้าถึงแบบสากลของ mvn

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

ยืนยันการติดตั้ง mvn

mvn --version

0

หากคุณไม่สะดวกกับ PPA ( แพคเกจการเก็บถาวรส่วนบุคคล ) ซึ่งคุณไม่มั่นใจในที่มาว่าเป็นทางเลือก

จากมุมมองด้านความปลอดภัยหากคุณไม่ทราบว่ามาจากไหนอย่าติดตั้ง

ในบทความที่เชื่อมโยงของฉันฉันดึงไฟล์ล่าสุดจาก apache ซึ่งเป็นแหล่งที่รู้จักและเชื่อถือได้ คุณสามารถรับเวอร์ชันล่าสุดได้

\ # ระบุ Maven เวอร์ชันล่าสุด
    ล่าสุด = $ (curl http://www-us.apache.org/dist/maven/maven-3/ | tac | sed -ne 's / [^ 0-9] * \ (\ ([0-9] \. \) \ {0,3 \} [0-9] \). * / \ 1 / p '| หัว -1)
\#ดาวน์โหลดได้
    wget http://www-us.apache.org/dist/maven/maven-3/$latest/binaries/apache-maven-$latest-bin.tar.gz

จากนั้นติดตั้งจาก

\ # คลายมันออก
    sudo tar -zxf apache-maven- $ latest-bin.tar.gz -C / usr / local /
\ # สร้างลิงก์ sym ให้มัน
    sudo ln -s / usr / local / apache-maven- $ ล่าสุด / bin / mvn / usr / bin / mvn

ตามที่ระบุไว้ในลิงก์ด้านบนและโพสต์ของฉันเมื่อ


1
กรุณาอย่าโพสต์คำตอบเดียวกันกับหลายคำถาม หากข้อมูลเดียวกันตอบคำถามทั้งสองข้อจริงๆแล้วควรปิดคำถามหนึ่งคำถาม (โดยปกติคำถามใหม่กว่า) เป็นข้อมูลซ้ำ คุณสามารถระบุสิ่งนี้ได้โดยการโหวตเพื่อปิดเป็นซ้ำหรือหากคุณไม่มีชื่อเสียงเพียงพอให้ยกธงขึ้นเพื่อระบุว่าซ้ำกัน มิฉะนั้นปรับคำตอบสำหรับคำถามนี้และไม่เพียงแค่วางคำตอบเดียวกันในหลาย ๆ ที่
DavidPostill
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.