Đúng Maven tên biến môi trường là gì: MAVEN_HOME
, MVN_HOME
hay M2_HOME
?
Tôi đã tìm thấy một số chi tiết về MAVEN_HOME
và M2_HOME
ở đây . Nhưng tôi cũng đã thấy MVN_HOME
xung quanh.
Đúng Maven tên biến môi trường là gì: MAVEN_HOME
, MVN_HOME
hay M2_HOME
?
Tôi đã tìm thấy một số chi tiết về MAVEN_HOME
và M2_HOME
ở đây . Nhưng tôi cũng đã thấy MVN_HOME
xung quanh.
Câu trả lời:
Cá nhân tôi chưa bao giờ thấy nó hữu ích khi đặt M2_HOME
.
Điều quan trọng là môi trường $ PATH của bạn. Đánh cắp một phần câu trả lời từ Danix, tất cả những gì bạn cần là:
export PATH=/Users/xxx/sdk/apache-maven-3.0.5/bin:$PATH
Các mvn
kịch bản tính toán M2_HOME
cho bạn anyway cho những gì nó có giá trị.
M2_HOME
(và những thứ tương tự) sẽ không được sử dụng kể từ Maven 3.5.0. Xem MNG-5607 và Ghi chú phát hành để biết thêm chi tiết.
Đây là thiết lập Maven của tôi. Bạn có thể sử dụng nó như một ví dụ. Bạn không cần bất cứ thứ gì khác để sử dụng Maven.
M2_HOME được sử dụng cho cả Maven 2 và 3
export M2_HOME=/Users/xxx/sdk/apache-maven-3.0.5
export M2=$M2_HOME/bin
export MAVEN_OPTS="-Xmx1048m -Xms256m -XX:MaxPermSize=312M"
export PATH=$M2:$PATH
MAVEN_HOME được sử dụng cho maven 1 và M2_HOME được sử dụng để định vị maven 2 . Có hai biến _HOME khác nhau có nghĩa là có thể chạy cả hai trên cùng một máy. Và nếu bạn kiểm tra các tập lệnh mvn.cmd cũ, chúng có những thứ như thế nào,
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
Thấy rằng @REM M2_HOME - location of maven2's installed home dir
Dù sao việc sử dụng mẫu này hiện không được chấp nhận với maven 3.5 theo tài liệu .
Dựa trên các vấn đề trong việc sử dụng M2_HOME liên quan đến các phiên bản Maven khác nhau được cài đặt và để đơn giản hóa mọi thứ, việc sử dụng M2_HOME đã bị xóa và không được hỗ trợ nữa MNG-5823 , MNG-5836 , MNG-5607
Vì vậy, bây giờ mvn.cmd trông giống như,
@REM -----------------------------------------------------------------------------
@REM Apache Maven Startup Script
@REM
@REM Environment Variable Prerequisites
@REM
@REM JAVA_HOME Must point at your Java Development Kit installation.
@REM MAVEN_BATCH_ECHO (Optional) Set to 'on' to enable the echoing of the batch commands.
@REM MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending.
@REM MAVEN_OPTS (Optional) Java runtime options used when Maven is executed.
@REM MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files.
@REM -----------------------------------------------------------------------------
Vì vậy, những gì bạn cần là JAVA_HOME được thiết lập chính xác. Theo hướng dẫn cài đặt mới (kể từ ngày 29/12/2017) , Chỉ cần thêm đường dẫn thư mục bin maven vào biến PATH. Nó sẽ làm các trick.
Ví dụ : export PATH=/opt/apache-maven-3.5.2/bin:$PATH
Tôi tình cờ xem đây là bộ sô cô la M2_HOME
. Tôi muốn xác định vị trí settings.xml
.
Cách hiện tại settings.xml
là đi đến %USERPROFILE%
. Ở đó, một thư mục .m2
được chứa, nơi người ta tìm thấy settings.xml
.
Không bao giờ sử dụng M2_HOME
. Nó không được hỗ trợ kể từ Apache Maven 3.5.0.
Chi tiết:
Dựa trên các vấn đề trong việc sử dụng
M2_HOME
liên quan đến các phiên bản Maven khác nhau được cài đặt và để đơn giản hóa mọi thứ, việc sử dụngM2_HOME
đã bị xóa và không được hỗ trợ nữa MNG-5823 , MNG-5836 , MNG-5607 .Thay đổi quan trọng đối với người dùng windows: Việc sử dụng
%HOME%
đã được thay thế bằng%USERPROFILE%
MNG-6001
Nguồn: https://maven.apache.org/docs/3.5.0/release-notes.html#overview-about-the-changes
$M2_HOME
Ví dụ, đôi khi được sử dụng để cài đặt Takari Extensions for Apache Maven
Một cách để tìm $M2_HOME
giá trị là tìm kiếm mvn
:
sudo find / -name "mvn" 2>/dev/null
Và, có lẽ nó sẽ là: /opt/maven/
M2_HOME
được đọc bởi Takari. Nó chỉ sử dụng một biến giữ chỗ trong các ví dụ về lệnh shell mà bạn có thể chạy.
Tôi đã giải quyết vấn đề tương tự với sau:
export M2_HOME=/usr/share/maven
Chúng ta có M2_HOME, MAVEN_HOME, M3_HOME, tất cả đều có sẵn trên thị trường
Trước đây M2_HOME là biến môi trường duy nhất được mọi người sử dụng làm tiêu chuẩn.
Tuy nhiên, do các bản phát hành mới nhất, MAVEN_Home đã trở thành tiêu chuẩn nhưng một số công cụ cũ vẫn đang cố gắng tìm chỉ M2_HOME,
vì vậy chúng ta nên có cả M2_HOME, MAVEN_HOME để duy trì bằng các công cụ cũ và mới.
M2_HOME cũng có thể được sử dụng cho cả hai
M2_HOME
trong quá khứ luôn dẫn đến các lỗi kỳ lạ, chủ yếu làNoClassDefFoundError
vìmvn
lệnh sẽ được tìm thấy trong PATH, nhưng với một phiên bản Maven khác được tìm thấy thông quaM2_HOME
. Cuộc sống của tôi đã tốt hơn kể từ khi tôi ngừng cài đặt env var đó và chỉ dựa vào việc thêm.../bin/mvn
thư mục của vàoPATH
và để Maven tự động phát hiện mọi thứ.