2014-09-15 16 views
5

Tôi đang sử dụng Maven để xây dựng một số dự án và sử dụng plugin gMaven để tạo RPM bao gồm phần tạo tác chính. Tôi chỉ muốn Maven cố gắng xây dựng RPM trên các hệ thống có rpmbuild, chứ không phải trên các hệ thống không, vì vậy tôi đã xây dựng hai profile riêng biệt, một profile được cho là mặc định và một cái được cho là kích hoạt khi trên một gia đình Unix Hệ điều hành.Tại sao Maven không sử dụng hồ sơ dự kiến?

Tôi có thể thề rằng tôi đã thử nghiệm nó và mọi thứ hoạt động chính xác, nhưng bây giờ nó đang chạy hồ sơ gia đình Unix ngay cả khi tôi xây dựng trên OSX. Tuy nhiên, nếu tôi thay đổi họ hệ điều hành của hồ sơ thành "cửa sổ" thì chắc chắn nó sẽ không có trên máy Windows và do đó chạy cấu hình mặc định.

Dưới đây là phần có liên quan của tập tin pom.xml của tôi:

<profiles> 
    <profile> 
     <id>default-profile</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <rpmPhase>none</rpmPhase> 
     </properties> 
    </profile> 
    <profile> 
     <id>rpm-profile</id> 
     <activation> 
      <os> 
       <family>unix</family> 
      </os> 
     </activation> 
     <properties> 
      <rpmPhase>package</rpmPhase> 
     </properties> 
    </profile> 
</profiles> 

Trong đầu ra Maven:

OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac" 

Tuy nhiên, Maven là thiết rpmPhase để "gói", thay vì "none , "đó không phải là hành vi mong đợi.

Có ai có thể thấy nếu tôi thiếu thứ gì đó ở đây không?

EDIT:

Ngoài ra, nếu tôi đặt gia đình OS để cái gì đó không tồn tại, hoặc nếu tôi nhận xét ra khối kích hoạt hoàn toàn sau đó cấu hình mặc định được sử dụng, vì vậy nó có vẻ như Maven đang tích cực phù hợp với OSX của tôi với một hệ điều hành Unix gia đình.

Trả lời

1

Vì vậy, sau khi nhìn xung quanh, dường như OSX khớp với "họ Unix" trong Maven. Rõ ràng lá cờ kiểm tra bất kỳ hệ điều hành nào kết thúc bằng "x" là gia đình Unix, có vẻ như một cách ngu ngốc để làm điều đó. Rất tiếc, có vẻ như bạn không thể thực hiện bất kỳ toán tử AND hoặc OR nào, vì vậy bạn phải chọn một gia đình và chỉ một gia đình. Bởi vì điều này, tôi đã thay đổi unix thành mac! Ít nhất là tránh vấn đề trong OSX. Nó sẽ, tất nhiên, vẫn còn cây trồng nếu xây dựng đang chạy trên Windows.

+0

Vâng OSX là hệ điều hành UNIX - dựa trên BSD. – OrangeDog

5

Tôi có vấn đề này cùng, heres một vấn đề JIRA giải thích vấn đề:

https://jira.codehaus.org/browse/MNG-4983

Họ nói rằng nó thực sự không phải là một lỗi. Đây là giải pháp nếu bạn cần OSX và Unix để tách biệt:

<os> 
    <family>unix</family> 
    <name>!mac os x</name> 
</os> 
Các vấn đề liên quan