2016-01-12 23 views
5

Tôi muốn có thể sử dụng biến môi trường nếu được đặt hoặc giá trị dự phòng mặc định mà tôi đặt trong pom.xml tương tự $ {VARIABLE: -default} trong bash . Có thể không? Một cái gì đó như:biến môi trường pom.xml với dự phòng mặc định

${env.BUILD_NUMBER:0} 
+2

Có một câu trả lời tốt ở đây: http://stackoverflow.com/ a/13709976/868456 – Dimath

+0

@Dimath giải pháp có vẻ dễ dàng hơn nhiều so với câu trả lời được đề xuất ở đây .. – lifeofguenter

Trả lời

6

Bạn có thể sử dụng cấu hình để đạt được điều này:

<profiles> 
    <profile> 
     <id>buildnumber-defined</id> 
     <activation> 
      <property> 
       <name>env.BUILD_NUMBER</name> 
      </property> 
     </activation> 
     <properties> 
      <buildnumber>${env.BUILD_NUMBER}</buildnumber> 
     </properties> 
    </profile> 
    <profile> 
     <id>buildnumber-undefined</id> 
     <activation> 
      <property> 
       <name>!env.BUILD_NUMBER</name> 
      </property> 
     </activation> 
     <properties> 
      <buildnumber>0</buildnumber> 
     </properties> 
    </profile> 
</profiles> 

Một chút tiết hơn bash ...

+0

Theo như tôi biết tôi sẽ cần phải vượt qua 'mvn -P buildnumber-undefined', phải không? Làm thế nào tôi sẽ sử dụng nó sau này trong pom.xml? – Gavriel

+0

Cấu hình thích hợp sẽ được kích hoạt dựa trên sự tồn tại hoặc không tồn tại của biến môi trường 'BUILD_NUMBER'. Sau đó thuộc tính 'buildnumber' sẽ được định nghĩa trong pom của bạn và có thể được truy cập bằng' $ {buildnumber} '. – StephaneM

+0

Theo như tôi biết, bạn không cần hai hồ sơ cho điều này (ít nhất là trong bản phát hành maven gần đây). Bạn có thể cung cấp mặc định ở cấp cao nhất '' và sau đó nó chỉ ghi đè bằng kích hoạt tùy chỉnh (cấu hình đầu tiên trong câu trả lời này). Lưu 11 dòng :) – nerdwaller

9

Tôi đã không thực sự hài lòng với cách tiếp cận được chấp nhận, vì vậy Tôi đơn giản hóa nó một chút.

Về cơ bản thiết lập thuộc tính mặc định trong các thuộc tính bình thường chặn, và chỉ ghi đè khi thích hợp (thay vì một câu lệnh switch có hiệu quả):

<properties> 
    <!-- Sane default --> 
    <buildNumber>0</buildNumber> 
    <!-- the other props you use --> 
</properties> 

<profiles> 
    <profile> 
     <id>ci</id> 
     <activation> 
      <property> 
       <name>env.buildNumber</name> 
      </property> 
     </activation> 
     <properties> 
      <!-- Override only if necessary --> 
      <buildNumber>${env.buildNumber}</buildNumber> 
     </properties> 
    </profile> 
</profiles> 
Các vấn đề liên quan