2011-09-26 38 views
14

Tôi đã đọc một số câu hỏi ở đây về cách đặt thuộc tính (hầu hết trong số họ đã nói về số phiên bản cho một ứng dụng) từ một plugin maven. Dường như không có cách nào dễ dàng để làm điều này và giải pháp tốt nhất tôi tìm thấy là có tệp filter.properties được cập nhật từ plugin và được tệp pom chính sử dụng để lọc tài nguyên mong muốn.Đặt thuộc tính maven từ plugin

tôi đã cố gắng giải pháp khác sau khi tôi đọc từ tài liệu Maven (Maven filter plugin):

Các biến có thể được đưa vào các nguồn tài nguyên của bạn. Các biến này, được ký hiệu là bởi dấu phân cách $ {...}, có thể đến từ thuộc tính hệ thống, thuộc tính dự án của bạn, từ tài nguyên bộ lọc của bạn và từ dòng lệnh .

Tôi thấy thú vị có thể đọc được từ các thuộc tính hệ thống. Vì vậy, tôi đã sửa đổi plugin của mình để đặt thuộc tính hệ thống như sau:

System.setProperty("currentVersion", appCurrentVersion); 

Tuy nhiên, tài nguyên được lọc dường như không đọc giá trị này. Ai có thể cho tôi biết có gì sai với cách tiếp cận này?

CẬP NHẬT: Tôi đang chạy plugin của mình trong giai đoạn xác thực giai đoạn.

Thanks a lot.

Trả lời

18

Đừng đặt nó như là hệ thống tài sản, thiết lập nó như là tài sản dự án Maven

// inject the project 
/** @parameter default-value="${project}" */ 
private org.apache.maven.project.MavenProject project; 

// and in execute(), use it: 
project.getProperties().setProperty("currentVersion", appCurrentVersion); 

Xem:

+0

Hoàn hảo! Cảm ơn rất nhiều, Sean. – PaquitoSoft

3

Thuộc tính Maven đặt trong initialize phase. Tôi giả định rằng trong giai đoạn đó maven tải thuộc tính hệ thống. Và sau đó maven không tải lại thuộc tính hệ thống. Nếu bạn cố gắng thêm một thuộc tính hệ thống sau giai đoạn này hơn là nó không được nạp.

Hãy thử chạy plugin của bạn theo số validate phase.

+0

Tôi đã chạy plugin trong giai đoạn xác thực. Xin lỗi tôi đã không đề cập đến nó trước đây. – PaquitoSoft

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