2013-09-05 26 views
19

Có thể ghi đè thuộc tính mô-đun từ pom mẹ mà không thay đổi mô-đun pom không?Ghi đè thuộc tính mô-đun từ POM mẹ trong Maven

Ví dụ:

mô-đun pom (Tôi không thể thay đổi nó ở tất cả):

<properties> 
    <someProperty>some value to be replaced</properties> 
</properties> 

mẹ pom:

<properties> 
    <someProperty>strongValue</someProperty> <!-- some magic here --> 
</properties> 

hiệu quả mô-đun pom:

<properties> 
    <someProperty>strongValue</someProperty> 
</properties> 

Nếu có thì làm thế nào để đạt được nó?

Trả lời

8

Cách duy nhất tôi biết để đảm bảo điều này là xác định thuộc tính trên dòng lệnh, ví dụ: mvn -DsomeProperty=strongValue <mvn goals/phases here>.

Bạn có thể thử nghiệm với các cấu hình được xác định trong phụ huynh; Tôi nghi ngờ rằng sẽ không giúp đỡ.

+1

thx, nhưng tôi cần ghi đè nó từ POM mẹ, không phải từ dòng lệnh (như câu hỏi đã nêu) – zacheusz

+1

Tôi nghĩ rằng bạn đã hết may mắn rồi. – user944849

+1

Xác định thuộc tính trong cấu hình trong phụ huynh và cho phép cấu hình dường như không kích hoạt các thuộc tính trong dự án con. –

8

Không, bạn không thể. Ý tưởng là nếu không thể ghi đè giá trị, không sử dụng thuộc tính. Nếu bạn không có tùy chọn khác, bạn có thể muốn ép buộc nó với http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html sẽ phá vỡ bản dựng nếu thuộc tính có giá trị khác với dự kiến.

+1

Bạn có ý gì, bạn không thể? Chúng tôi làm điều này tất cả các thời gian và nó hoạt động. Tất nhiên bạn có thể ghi đè lên các thuộc tính pom cha mẹ. Chỉ cần kiểm tra pom cha mẹ của tôi cho một dự án mà tôi đã làm điều đó bởi vì bạn làm cho tôi nghi ngờ. Và nó hoạt động. Pom hiệu quả của tôi cho thấy giá trị ghi đè. – Lawrence

+2

Tôi nghĩ bạn hiểu sai câu hỏi. Cố gắng đọc nó như: một tài sản có thể là cuối cùng (như trong Java) để nó không thể bị ghi đè bởi một đứa trẻ? Đối với câu hỏi này câu trả lời là "không". –

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