MAVEN_HOME, MVN_HOME hoặc M2_HOME


84

Đúng Maven tên biến môi trường là gì: MAVEN_HOME, MVN_HOMEhay M2_HOME?

Tôi đã tìm thấy một số chi tiết về MAVEN_HOMEM2_HOME ở đây . Nhưng tôi cũng đã thấy MVN_HOMExung quanh.

Câu trả lời:


62

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 mvnkịch bản tính toán M2_HOMEcho bạn anyway cho những gì nó có giá trị.


3
+1. Tôi thậm chí còn nói rằng cài đặt M2_HOMEtrong quá khứ luôn dẫn đến các lỗi kỳ lạ, chủ yếu là NoClassDefFoundErrormvnlệ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 qua M2_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/mvnthư mục của vào PATHvà để Maven tự động phát hiện mọi thứ.
Baptiste Mathus

6
"Cá nhân tôi chưa bao giờ thấy hữu ích khi đặt M2_HOME." Và bạn đã đúng. Điều đó không được dùng nữa: stackoverflow.com/a/47712646/270371
davidxxx


22

Đâ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

8

MAVEN_HOME được sử dụng cho maven 1M2_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


1

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.xmllà đ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_HOMEliê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 .

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


-1

$M2_HOMEVí dụ, đôi khi được sử dụng để cài đặt Takari Extensions for Apache Maven

Một cách để tìm $M2_HOMEgiá trị là tìm kiếm mvn:

sudo find / -name "mvn" 2>/dev/null

Và, có lẽ nó sẽ là: /opt/maven/


Tôi không thấy bất cứ điều gì trên trang liên kết cho thấy điều gì đó 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.
Jesse Glick

-2

Tôi đã giải quyết vấn đề tương tự với sau:

export M2_HOME=/usr/share/maven

2
Mặc dù mã này có thể giải quyết câu hỏi, bao gồm giải thích về cách thức và lý do tại sao điều này giải quyết vấn đề sẽ thực sự giúp cải thiện chất lượng bài đăng của bạn và có thể dẫn đến nhiều phiếu bầu hơn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ người hỏi bây giờ. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích và đưa ra dấu hiệu về những giới hạn và giả định áp dụng.
tiếng bíp kép

-7

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

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.