Cách để chỉ định danh sách giá trị thông qua thuộc tính hệ thống, cho plugin phụ thuộc vào mức độ cập nhật của plugin.
Tuy nhiên, nếu bạn đang xử lý một plugin được triển khai thích hợp được cập nhật, thì cách chính xác chỉ định một mảng giá trị cho plugin là thông qua các chuỗi được phân tách bằng dấu phẩy.
Đây là một tài liệu tham khảo: http://blog.sonatype.com/2011/03/configuring-plugin-goals-in-maven-3/
Dưới đây là một trích dẫn từ các tài liệu tham khảo:
Đối với nhiều thông số plugin của nó là thỉnh thoảng thuận tiện để xác định giá trị của họ từ dòng lệnh thông qua thuộc tính hệ thống. Trong quá khứ, điều này được giới hạn trong các thông số của các loại đơn giản như Chuỗi hoặc Boolean. Phiên bản Maven mới nhất cuối cùng cho phép người dùng plugin định cấu hình các bộ sưu tập hoặc mảng từ dòng lệnh thông qua các chuỗi được phân cách bằng dấu phẩy. Ví dụ: tham số plugin như sau:
Đi xa hơn một chút, chúng ta có thể xem xét ví dụ cụ thể hơn. Hãy xem xét, plugin Wildfly maven. Plugin này có thuộc tính cấu hình không dùng nữa được gọi là: jvmArgs.
Điều này được dự kiến sẽ được chuyển vào dưới dạng danh sách giá trị được phân tách bằng dấu cách. Như chúng ta đều biết, trong dòng lệnh, rối tung xung quanh với không gian không đáng yêu. Vì vậy, nếu chúng ta nhìn vào định nghĩa của paramter này trong mã mojo plugin, bạn sẽ tìm thấy một cái gì đó như thế này (ở đây đi một trích dẫn).
/**
* A space delimited list of JVM arguments.
*
* @deprecated use {@link #javaOpts}
*/
@Parameter(alias = "jvm-args", property = PropertyNames.JVM_ARGS)
@Deprecated
private String jvmArgs;
Vì vậy, đây là cách làm cũ.
Bây giờ, nếu bạn đang sử dụng phiên bản mới nhất của plugin này (ví dụ: Alpha6). Sau đó, mã nguồn sẽ có một trường mới đẹp được gọi là javaOpts. Hãy để chúng tôi xem xét trường này trông như thế nào trong mã.
/**
* The JVM options to use.
*/
@Parameter(alias = "java-opts", property = PropertyNames.JAVA_OPTS)
private String[] javaOpts;
Vì vậy, điều chúng tôi thấy là chúng tôi có trường mảng đẹp trong StartMojo. Trường mảng này được chú thích đúng cách. Và động cơ maven sẽ thực hiện việc nâng các giá trị vào Mojo.
Khi bạn muốn để bơm dữ liệu vào lĩnh vực này thông qua dòng lệnh, bạn sẽ trong bạn tập tin thực thi chỉ định một cái gì đó có dạng:
-Dwildfly.javaOpts="-Xmx1536M,-Xms1536M,-XX:MaxMetaspaceSize=512M,-XX:-HeapDumpOnOutOfMemoryError"
Nếu bạn thử samething sử dụng sapces thay vì commans. Tôi sẽ cho bạn biết điều gì sẽ xảy ra:
[INFO] Máy chủ STANDALONE đang khởi động. Kích thước không hợp lệ tối đa đống: -Xmx1536M -XX: MaxMetaspaceSize = 512M -XX: -HeapDumpOnOutOfMemoryError
Vì vậy, bạn thấy đấy, maven khi nó với nuốt sở hữu hệ thống của tôi đầy những khoảng trống đó không làm một tách chuỗi. Vì vậy, Wildfly đã cố gắng thiết lập các thiết lập bộ nhớ jvm như thể bộ nhớ tối đa là chuỗi đầy đủ đó. Mặt khác, khi tôi sử dụng dấu phẩy để tách nó, Mojo được làm phong phú và tôi có thể kiểm soát cài đặt bộ nhớ của máy chủ ứng dụng khi khởi động.
Và tất nhiên, bạn muốn sử dụng thuộc tính hệ thống chứ không phải cấu hình XML pom.xml, cho các tác vụ như thiết lập công việc Jenkins. Với các thuộc tính hệ thống, bạn khá linh hoạt hơn.
Đó là nó.
Đây cũng là kết luận của tôi, thật đáng buồn. – torbjornvatn
Tôi đã thêm một số gợi ý cho một phương pháp thay thế có thể hữu ích, sử dụng chia sẻ-io với các tệp mô tả bên ngoài để chuyển một bộ cấu hình vào plugin với một tham số duy nhất. –