Bạn có thể sử dụng các điều kiện sử dụng nhiệm vụ <fail>
:
<fail message="Property "foo" needs to be set to a value">
<condition>
<or>
<equals arg1="${foo}" arg2=""/>
<not>
<isset property="foo"/>
</not>
</or>
</condition>
này tương đương với nói if (not set ${foo} or ${foo} = "")
là giả. Bạn phải đọc các điều kiện XML từ trong ra ngoài.
Bạn có thể đã sử dụng mệnh đề <unless>
trong nhiệm vụ <fail>
nếu bạn chỉ quan tâm đến việc biến có được đặt hay không và không cho biết giá trị đó có thực tế hay không.
<fail message="Property "foo" needs to be set"
unless="foo"/>
Tuy nhiên, điều này sẽ không thành công nếu thuộc tính được đặt nhưng không có giá trị.
Có một thủ thuật có thể làm cho đơn giản này
<!-- Won't change the value of `${foo}` if it's already defined -->
<property name="foo" value=""/>
<fail message="Property "foo" has no value">
<condition>
<equals arg1="${foo}" arg2=""/>
</condition>
</fail>
Hãy nhớ rằng tôi không thể đặt lại một tài sản! Nếu ${foo}
đã có giá trị, nhiệm vụ <property>
ở trên sẽ không làm bất cứ điều gì. Bằng cách này, tôi có thể loại bỏ điều kiện <isset>
.Nó có thể được tốt đẹp kể từ khi bạn có ba thuộc tính:
<property name="foo" value=""/>
<property name="bar" value=""/>
<property name="fubar" value=""/>
<fail message="You broke the build, you dufus">
<condition>
<or>
<equals arg1="${foo}" arg2=""/>
<equals arg1="${bar}" arg2=""/>
<equals arg1="${fubar}" arg2=""/>
</or>
</condition>
</fail>
Nguồn
2012-02-09 23:33:10
thể trùng lặp của [ant lọc - thất bại nếu tài sản không được thiết lập] (http://stackoverflow.com/questions/226683/ant-filtering-fail-if-property-not-set) – oers