2010-03-16 28 views
6

Khi bạn xác định một điểm mở rộng trong tệp xây dựng Ant, bạn có thể có nó theo điều kiện bằng cách sử dụng thuộc tính if hoặc except. Trên một mục tiêu, nếu/trừ khi ngăn chặn nhiệm vụ của nó được chạy. Nhưng một điểm mở rộng không có bất kỳ nhiệm vụ nào để chạy theo điều kiện, vì vậy điều kiện này làm gì? Suy nghĩ của tôi (được chứng minh là không chính xác trong Ant 1.8.0) là nó sẽ ngăn chặn bất kỳ nhiệm vụ nào mở rộng điểm mở rộng đang được chạy. Dưới đây là một ví dụ xây dựng kịch bản cho thấy các vấn đề:Việc sử dụng điểm mở rộng của Ant nếu/trừ các thuộc tính là gì?

<project name = "ext-test" 
    default = "main"> 

    <property name = "do.it" value = "false" /> 

    <extension-point name = "init"/> 
    <extension-point name = "doit" depends = "init" if = "${do.it}" /> 

    <target name = "extend-init" extensionOf = "init"> 
    <echo message = "Doing extend-init." /> 
    </target> 

    <target name = "extend-doit" extensionOf = "doit"> 
    <echo message = "Do It! (${do.it})" /> 
    </target> 

    <target name = "main" depends = "doit"> 
    <echo message = "Doing main." /> 
    </target> 

</project> 

Sử dụng lệnh:

ant -v 

Relults trong:

Apache Ant version 1.8.0 compiled on February 1 2010 
Trying the default build file: build.xml 
Buildfile: /Users/bob/build.xml 
Detected Java version: 1.6 in: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home 
Detected OS: Mac OS X 
parsing buildfile /Users/bob/build.xml with URI = file:/Users/bob/build.xml 
Project base dir set to: /Users/bob 
parsing buildfile jar:file:/Users/bob/Documents/Development/3P-Tools/apache-ant-1.8.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/Users/bob/Documents/Development/3P-Tools/apache-ant-1.8.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file 
Build sequence for target(s) `main' is [extend-init, init, extend-doit, doit, main] 
Complete build sequence is [extend-init, init, extend-doit, doit, main, ] 

extend-init: 
    [echo] Doing extend-init. 

init: 

extend-doit: 
    [echo] Do It! (false) 

doit: 
Skipped because property 'false' not set. 

main: 
    [echo] Doing main. 

BUILD SUCCESSFUL 
Total time: 0 seconds 

Bạn sẽ thấy mục tiêu mở rộng-số tiền rất ít được thực hiện nhưng bản thân điểm mở rộng được bỏ qua. Kể từ khi một điểm mở rộng không có bất kỳ nhiệm vụ chính xác những gì đã bị bỏ qua? Bất kỳ mục tiêu nào phụ thuộc vào điểm mở rộng vẫn được thực thi vì mục tiêu bị bỏ qua là mục tiêu thành công. Giá trị của các thuộc tính if/except trên một điểm mở rộng là gì?

Trả lời

0

Tôi đoán không có thực tế sử dụng cho chúng, chúng có thể xuất hiện dưới dạng thuộc tính vì mục tiêu mở rộng điểm mở rộng (các lớp java được liên kết thực hiện).

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