Làm cách nào để cài đặt Maven 3?


33

Maven 2 nằm trong kho, nhưng không phải Maven 3. Làm cách nào để cài đặt Maven 3 đúng cách? Hướng dẫn mà tôi thấy không thực sự hoạt động đúng.

Tôi đang sử dụng Natty, nhưng tôi chắc chắn điều này sẽ không thay đổi gì cả.

Câu trả lời:


25

Maven3 là mặc định trong Ubuntu 12.04 (chính xác)

Maven2 là phần mới nhất trong kho cho 11.10.

PPAs cho maven3 có vẻ khá khan hiếm - đây là một bản dành cho maverick - mặc dù không phải là phiên bản mới nhất hiện có.

Lời khuyên tốt nhất là ở lại với phiên bản ổn định có sẵn cho phiên bản phân phối của bạn.

Tuy nhiên, nếu bạn muốn tự cập nhật, việc tải xuống mã và tự cài đặt là rất đơn giản.

Tải xuống tệp .tar.gz từ đây và làm theo hướng dẫn cài đặt trên cùng một trang web


Tôi sẽ thử và sử dụng gói trong repo mà bạn đã liên kết với tôi để hướng dẫn các bước của tôi.
nickguletskii

Phải, điều này hoạt động. Cảm ơn - Tôi đã trích xuất các tệp từ kho lưu trữ theo cách thủ công và thay thế mọi thứ trong / usr / share / maven3 / bằng các tệp từ tar.
nickguletskii

đã thử điều này nhưng nó không hoạt động. sau khi đóng thiết bị đầu cuối, nó không thể nhận ra lệnh mvn
user962206

@ user962206 - vui lòng đặt câu hỏi mới.
fossfreedom


25

Đây là một PPA maven3 hoạt động tốt với tôi trên 64 bit Ubuntu 11.10

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

Nếu bạn đã cài đặt maven2 từ repos chính tắc, điều này sẽ không thay thế nó mà cung cấp cho bạn một nhị phân mvn3.

Nếu bạn muốn có nhị phân được gọi là mvn thay vì mvn3, bạn chỉ cần làm như sau:

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

Nguồn


4
Điều này dường như không còn hoạt động nữa.
KingOfHypocites

4

Câu hỏi đã cũ, nhưng vàng. Tôi đã phải tìm một giải pháp ngày hôm nay. Ở đây chúng tôi đi. Không cần sử dụng kho lưu trữ không bảo mật, vì maven3 đã được bao gồm trong kho Repos của Ubuntu. Một giải pháp tại Ubuntu 14.04 LTS sẽ như sau:

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

Với lệnh thứ 2, bạn được yêu cầu đặt phiên bản đã sử dụng. Bạn có thể phân biệt các thư mục chính xác bằng cách chọn đường dẫn trong đó maven2 KHÔNG phải là một phần của nó.

   *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

Trong trường hợp của tôi, tôi đã phải chọn 1

Với lệnh đã ban hành, mvn -vbạn có thể xác minh, nếu cài đặt thành công và liệu bạn đã chọn đúng phiên bản chưa. Dưới đây bạn có một ví dụ về các giá trị được trả 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"

Hy vọng điều này sẽ giúp bạn một chút.


Điều đó chỉ mang lại cho 3.0.5 (2016 / 02-05) nhưng tôi muốn 3.3.x - Không có cách nào để có được điều đó?
Kajetan Abt

2

Tôi đã tạo một tập lệnh mới không chỉ cài đặt Maven + thêm nó vào thùng rác mà còn chọn nếu bạn đang sử dụng Ubuntu với tư cách là khách VirtualBox và sau đó thử gắn thư mục '.m2' và maven hiện có thể có / không chứa cài đặt.

Maven vẫn giữ nguyên nếu nó chạy trên Windows hoặc Unix, vì vậy bạn có thể sử dụng cùng một Maven giữa cả hai đây là thiết lập VirtualBox của bạn ...

Tái bút Lưu ý việc xây dựng các tập lệnh có thể gắn kết / ngắt kết nối các thư mục được chia sẻ từ / 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

Đây là maven3 PPA có thể giải quyết vấn đề này.

Thực hiện theo các cài đặt:

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

Và bây giờ bạn đã cài đặt 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"

Liên kết với Launchpad



1

Tôi đã nâng cấp nhưng có một lỗi classnotfound. Để khắc phục điều này:

Sau khi dành một chút thời gian để thử các kết hợp khác nhau, tôi thấy rằng điều này là do tôi đã đặt cả M2_HOME và M3_HOME trong các biến môi trường của mình. Khi tôi xóa M2_HOME khỏi các biến môi trường của mình, tôi có thể làm việc này trở lại nghiêm trọng. thời gian cho một số


BTW: để xóa M2_HOME khỏi ubfox: xem / etc / môi trường
RobAu

0

Tải về maven từ trang web chính thức của maven và giải nén.

Di chuyển thư mục ứng dụng sang / usr / local

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

Tạo một liên kết mềm trong / usr / bin để truy cập toàn cầu của mvn

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

Xác minh cài đặt mvn

mvn --version

0

Nếu bạn không thoải mái với PPA ( kho lưu trữ gói cá nhân ) mà bạn không đảm bảo về nguồn gốc xuất xứ thì đây là một giải pháp thay thế.

Từ góc độ bảo mật nếu bạn không biết nó đến từ đâu thì đừng cài đặt nó.

Trong bài viết được liên kết của tôi, tôi lấy tệp mới nhất từ ​​apache, một nguồn được biết đến và đáng tin cậy. Bạn có thể nhận phiên bản mới nhất

\ #Xác định phiên bản mới nhất của maven
    mới nhất = $ (curl http://www-us.apache.org/dist/maven/maven-3/ | tac | sed -ne 's / [^ 0-9] * \ (\ ([0-9] \. \) \ {0,3 \} [0-9] \). * / \ 1 / p '| đầu -1)
\ #dải xuống
    wget http://www-us.apache.org/dist/maven/maven-3/$latest/binaries/apache-maven-$latest-bin.tar.gz

sau đó cài đặt nó từ

\ # Mở gói nó
    sudo tar -zxf apache-maven- $ mới nhất-bin.tar.gz -C / usr / local /
\ # tạo một liên kết sym tới nó
    sudo ln -s / usr / local / apache-maven- $ mới nhất / bin / mvn / usr / bin / mvn

như được nêu trong liên kết ở trên và bài viết của tôi trên


1
Xin vui lòng không gửi cùng một câu trả lời cho nhiều câu hỏi. Nếu cùng một thông tin thực sự trả lời cả hai câu hỏi, thì một câu hỏi (thường là câu hỏi mới hơn) nên được đóng lại như một bản sao của câu hỏi khác. Bạn có thể chỉ ra điều này bằng cách bỏ phiếu để đóng nó dưới dạng trùng lặp hoặc, nếu bạn không đủ danh tiếng cho điều đó, hãy giơ cờ để chỉ ra rằng đó là một bản sao. Mặt khác, điều chỉnh câu trả lời của bạn cho câu hỏi này và không chỉ dán cùng một câu trả lời ở nhiều nơi.
DavidPostill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.