2009-05-28 22 views

Trả lời

11

Tạo phiên bản "không có phiên bản" của mục tiêu. Nếu bạn có

<target name="A" depends="B"> 
    ... 
</target> 

Thay đổi để

<target name="A" depends="B,AwithoutDeps"/> 

<target name="AwithoutDeps"> 
    ... 
</target> 

Bây giờ bạn có thể gọi A như bình thường (mà sẽ bắn ra B sau đó AwithoutDeps) hoặc chỉ cần gọi AwithoutDeps một cách rõ ràng và không có DEPS bị sa thải. [Lưu ý rằng "phụ thuộc" gọi là phụ thuộc vào thứ tự]

Tất nhiên, lựa chọn một số tên tốt hơn so với những;)

+0

Rất giống với giải pháp của tôi - Tôi nghĩ sự khác biệt chỉ là một câu hỏi về phong cách. Điều này khai thác chức năng phụ thuộc của kiến, giải pháp của tôi khai thác chức năng "đóng gói". – Jared

+0

Cảm ơn! Điều này có vẻ sạch hơn là sao chép và dán. – GreenieMeanie

+0

@ Jared - Tôi cũng nghĩ về antcall, nhưng nó đắt hơn AFAIK, vì nó thiết lập một bản sao của các thuộc tính và như vậy. Không phải đó là một thỏa thuận lớn mặc dù ... –

2

Tôi nghĩ lựa chọn đơn giản duy nhất của bạn ở đây là tạo một bản sao của mục tiêu được đề cập và khiến nó không có phụ thuộc.

+0

Tôi vừa loại bỏ các thuộc tính phụ thuộc ngay bây giờ (điều này gần như giống nhau), nhưng tôi tự hỏi một giải pháp có thể sạch hơn. – GreenieMeanie

+0

Sẽ là tốt đẹp để có điều này một tùy chọn cho dòng lệnh ant. – user959690

1

tôi sẽ làm một cái gì đó như thế này:

<target name="doSomethingNoDeps"> 
    ... 
</target> 

<target name="doSomething" depends="doSomeOther"> 
    <antcall target="doSomethingNoDeps"/> 
</target> 
2

Một khả năng là sử dụng thuộc tính if hoặc unless trên (các) mục tiêu phụ thuộc. Ví dụ:

<target name="dependency1" unless="dependency1.disabled"> 
    <echo>Hello from dependency 1!</echo> 
</target> 

<target name="dependency2" unless="dependency2.disabled"> 
    <echo>Hello from dependency 2!</echo> 
</target> 

<target name="main-target" depends="dependency1, dependency2"> 
    <echo>Hello from the main target!</echo> 
</target> 

Bây giờ bạn có thể chạy Ant với -Ddependency1.disabled=true và/hoặc -Ddependency2.disabled=true rời ra khỏi sự phụ thuộc bạn không muốn, nhưng mặc định vẫn sẽ bao gồm chúng.

Và tất nhiên, bạn chỉ có thể có thuộc tính "toàn cầu" dependencies.disabled nếu điều đó dễ dàng hơn cho bạn.

Nếu bạn muốn làm converse của hành vi này (nơi phụ thuộc được loại trừ theo mặc định), chỉ cần sử dụng if thay vì unless (và có tên thuộc tính như "dependency1.enabled" thay vì "tàn tật") .

-1

Tôi đã tạo macro bằng đoạn mã, những gì tôi muốn. Sau đó thực hiện 2 mục tiêu, 1 cuộc gọi macro với "arg1", thứ hai với "arg2". Bạn cũng có thể tạo macro mà không cần tham số aceepting.

+0

một câu trả lời sẽ cho thấy cách giải quyết vấn đề. cho thấy những gì bạn đã làm. –

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