2012-06-27 42 views
6

Đây là những gì tôi đang cố gắng đạt được:antcall dựa trên điều kiện

nếu thuộc tính được đặt thì hãy gọi cho mục tiêu chống mục tiêu. điều này có thể làm được không? ai đó có thể cho tôi biết làm thế nào?

<condition> 
    <isset property="some.property"> 
     <antcall target="do.something"> 
    </isset> 
</condition> 
+0

có thể trùng lặp của [Cách kiểm tra điều kiện trong kiến ​​và tùy thuộc vào giá trị của nó in tin nhắn?] (Http://stackoverflow.com/questions/10680982/how-check-for-a-condition-in-ant -and-tùy-on-giá trị-in-tin nhắn) –

Trả lời

6

Something như thế này nên làm việc:

<if> 
    <isset property="some.property"/> 
    <then> 
     <antcall target="do.something"> 
    </then> 
</if> 

Nếu sau đó điều kiện đòi hỏi ant-contrib, nhưng như vậy không chỉ là về bất cứ điều gì hữu ích trong việc kiến.

+0

Tuyệt vời. Làm việc cho tôi. Tôi ổn với Ant Contrib. – soothsayer

-1

cũng xem xét bạn có thể gọi groovy cho các mục đích:

<use-groovy/> 
<groovy> 
    if (Boolean.valueOf(properties["some.property"])) { 
    ant.project.executeTarget("do.something") 
    } 
</groovy> 
6

Tôi biết tôi thật sự muộn để điều này, nhưng đây là một cách khác để làm điều này nếu bạn đang sử dụng một số kiến-contrib mà nếu doesn 't hỗ trợ một phần tử antcall lồng nhau (Tôi đang sử dụng antcontrib 1.02b mà không).

<target name="TaskUnderRightCondition" if="some.property"> 
    ... 
</target> 

Bạn có thể tiếp tục mở rộng này để kiểm tra xem nếu some.property nên được đặt ngay trước khi mục tiêu này được gọi bằng cách sử dụng phụ thuộc bởi vì phụ thuộc được thực hiện trước nếu thuộc tính được đánh giá. Vì vậy bạn có thể có điều này:

<target name="TestSomeValue"> 
    <condition property="some.property"> 
    <equals arg1="${someval}" arg2="${someOtherVal}" /> 
    </condition> 
</target> 

<target name="TaskUnderRightCondition" if="some.property" depends="TestSomeValue"> 
    ... 
</target> 

Trong trường hợp này TestSomeValue được gọi, và nếu someval == someOtherVal sau đó some.property được thiết lập và cuối cùng, TaskUnderRightCondition sẽ được thực thi. Nếu someval! = SomeOtherVal thì TaskUnderRightCondition sẽ bị bỏ qua.

Bạn có thể tìm hiểu thêm về các điều kiện qua the documentation.

+0

Bạn có thể làm điều gì đó như ''? – siledh

+0

@ siledh Tôi không biết. Tôi không nghĩ vậy. –

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