2016-01-12 25 views
5

Làm cách nào để tìm các tùy chọn Java (Xmx, Xms, Xss, v.v ..) đang được Maven sử dụng?Tìm các tùy chọn Java được sử dụng bởi Maven

Tôi đã phát hiện ra rằng một cách để đặt chúng là thông qua môi trường MAVEN_OPTS. Bây giờ tôi muốn một cách để được đảm bảo nó nhận được các cài đặt đúng.

EDIT: Tôi tin rằng nó khác với this question vì tôi không muốn thấy giá trị của biến môi trường. Tôi thà muốn xem những thiết lập nào đang được Maven sử dụng, cho dù nó có xuất phát từ một tệp tin env var, settings.xml hay các phương tiện khác hay không.

EDIT2: Tôi cũng quan tâm đến cách khác để thiết lập tùy chọn Java cho một Maven xây dựng

+0

Bản sao có thể có của [Cách in MAVEN thực tế \ _OPTIONS đang được sử dụng?] (Http://stackoverflow.com/questions/3167364/how-to-print-the-actual-maven-options-that- đang được sử dụng) – Tunaki

+0

Bạn chỉ muốn xem cách kiểm tra tùy chọn Maven được sử dụng hoặc cũng theo các cách khác để cài đặt các tùy chọn tương tự? –

+0

vâng tôi cũng quan tâm đến các cách khác, cảm ơn – Vituel

Trả lời

0

Có lẽ nó giúp để bắt đầu Maven với sản lượng debug verbose (-debug, tôi nghĩ?). Nếu không, chỉ cần thực hiện một số ps aux | grep java và kiểm tra các đối số của quá trình (giả sử * nix).

8

Bạn có thể thiết lập tùy chọn Java cho Maven tại các điểm khác nhau và mức độ (trên toàn cầu hoặc thông qua cấu hình bổ sung):

cấu hình Plugin: chỉ cho Compilation
Sử dụng cấu hình Maven Compiler Plugin để biên dịch mã ứng dụng và mã kiểm tra, bạn có thể đặt các tùy chọn Xmx, Xms, Xss được yêu cầu thông qua mục nhập cấu hình compileArgs, có sẵn cho cả hai mục tiêu compiletestCompile. Một ví dụ chính thức có sẵn here và trên các câu trả lời khác của SO như this one.
Ví dụ cũng được hiển thị bên dưới ở điểm thứ ba.

cấu hình Plugin: chỉ cần cho thử nghiệm thực hiện
Sử dụng cấu hình Maven Surefire Plugin cho kiểm tra hành quyết, bạn có thể thiết lập các tùy chọn Java yêu cầu phải được sử dụng trong thời gian chạy qua các mục nhập argLine cấu hình của mục tiêu test. Một ví dụ chính thức có sẵn here.
Ví dụ cũng được hiển thị bên dưới ở điểm thứ ba.

cấu hình Plugin: qua Properties (và hồ sơ)
Bạn có thể kết hợp hai tùy chọn ở trên (trong trường hợp tùy chọn Java thông thường) như là một giá trị tài sản để chuyển cho cả hai mục cấu hình compileArgsargLine hoặc có đặc tính khác nhau cho mỗi cấu hình (theo nhu cầu của bạn).

<property> 
     <jvm.options>-Xmx256M</jvm.options> 
</property> 

[...] 
<build> 
    [...] 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <compilerArgs> 
      <arg>${jvm.options}</arg> 
     </compilerArgs> 
    </plugin> 

    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.19.1</version> 
     <configuration> 
      <argLine>${jvm.options}</argLine> 
     </configuration> 
    </plugin> 
    </plugins> 
    [...] 
</build> 
[...] 

Sử dụng thuộc tính mang đến cho bạn cũng là một hai tiện ích vượt trội (trên đầu trang của tập trung): bạn có thể sử dụng profiles sau đó để cá nhân hóa nó dựa trên hành vi mong muốn khác nhau (và ví dụ trong this SO answer) và bạn có thể ghi đè lên chúng thông qua dòng lệnh là tốt, như:

mvn clean install -Djvm.options=-Xmx512 

cấu hình toàn cầu/Dự án: Tùy chọn nộp
Kể từ Maven 3.3.1, bạn có thể specify lựa chọn của bạn trong một file .mvn/jvm.config cho mỗi dự án. Đó là một thay thế cho MAVEN_OPTS và phạm vi hẹp hơn (cho mỗi dự án). Tuy nhiên, vì nó là một tính năng mới của Maven, mọi người nên biết về nó, nếu không việc khắc phục sự cố và bảo trì có thể bị ảnh hưởng.

toàn cầu/Env cấu hình: MAVEN_OPTS
Maven biến well-known môi trường để thiết lập tùy chọn thực hiện toàn cầu, tuy nhiên áp dụng cho tất cả Maven builds chia sẻ môi trường đó (ví dụ: mỗi đăng nhập người dùng).

Khi chạy Maven sử dụng -X tùy chọn (debug được kích hoạt), bạn sẽ có kết quả như sau như một phần của xây dựng của bạn:

[DEBUG] properties used {java.vendor=Oracle Corporation, ... , env.MAVEN_OPTS=-Xmx256M, ... 

Cập nhật
Sau khi tất cả, các thực mvn lệnh là một tập lệnh hệ điều hành. Xem xét nó trong Windows, tôi thấy khả năng sử dụng tùy chọn MAVEN_BATCH_ECHO, nếu được bật (giá trị được đặt thành on), sẽ lặp lại bất kỳ lệnh nào được thực thi bởi tập lệnh và cũng như lệnh gọi của lệnh java, nơi bạn có thể xem các tùy chọn của bạn (số MAVEN_OPTS) có được chọn chính xác cùng với danh sách đầy đủ các tham số được truyền cho nó hay không.

Dưới đây là một thực Tôi đã thử nghiệm trên Windows:

set MAVEN_BATCH_ECHO=on 
set MAVEN_OPTS=-Xmx256M 
mvn compile > output.txt 

LƯU Ý: các output.txt sẽ chứa khá nhiều văn bản, cung cấp xây dựng đầu ra và thêm echo s hành quyết. Là một phần của nó, nó được cung cấp:

>"path_to_\jdk1.7\bin\java.exe" -Xmx256M -classpath "path_to\apache-maven-3.1.1\bin\..\boot\plexus-classworlds-2.5.1.jar" "-Dclassworlds.conf=path_to\apache-maven-3.1.1\bin\..\bin\m2.conf" "-Dmaven.home=path_to\apache-maven-3.1.1\bin\.." org.codehaus.plexus.classworlds.launcher.Launcher compile 

Như bạn có thể thấy, tùy chọn -Xmx256M được chọn chính xác. Nếu kịch bản maven cho hệ điều hành khác không cung cấp tùy chọn này, thì bạn có thể chỉ cần thêm nó vào kịch bản (đơn giản echo trước khi thực thi java, hiển thị lệnh, cũng sẽ là đủ).
Bạn có thể tìm thấy tập lệnh maven trong thư mục cài đặt maven của mình, trong thư mục con bin.


Update2
Hơn nữa, kể từ khi Maven là một công cụ Java sau khi tất cả và như bạn có thể nhìn thấy từ kịch bản của nó gọi lệnh java, bạn có thể xem tất cả các tùy chọn có sẵn như đề xuất trong này SO answer bởi hơi thay đổi kịch bản Maven và sử dụng lệnh jinfo sẽ thực sự cung cấp cho bạn câu trả lời theo điều này khác SO answer.

Các vấn đề liên quan