2013-04-01 10 views
10

Làm thế nào để xác định thư mục gốc thì chúng ta chạy ant như ant -f somedir/dir/build.xml. bộ Ant basedir so với build.xml, nếu tôi chỉ địnhLàm thế nào để xác định thư mục gốc thì chúng ta chạy ant như somedir -f ant/dir/build.xml

<project basedir="." ..> 

Tôi muốn dựa vào vị trí mà Ant được thực thi.

+0

bạn có thể sao chép build.xml vào thư mục khác? –

+0

có, nhưng tôi không muốn sao chép tệp này –

+0

liên kết hoặc liên kết tượng trưng sau đó? –

Trả lời

13

Sử dụng -D để ghi đè lên các tài sản basedir:

ant -Dbasedir=`pwd` -f path/to/build.xml 

Việc sử dụng pwd là một điều Linux chỉ, nhưng bạn luôn có thể đặt đường dẫn tuyệt đối của thư mục hiện có nếu bạn đang ở trên một nền tảng.

Tôi không nghĩ rằng có cách để làm điều này bên trong build.xml, ngắn của việc thực hiện lại kiến ​​với nhiệm vụ ant.

8

Bạn có thể cố gắng sử dụng subant nhiệm vụ:

Giả sử bạn có hai thư mục khác nhau

  1. thư mục hiện tại của bạn X:// phóng/thư mục nơi bạn đang thực hiện kiến ​​của bạn lệnh từ

  2. Thư mục nơi bulid.xml đích của bạn là: Y: /any/folder/with/build.xml

Bạn có thể làm như sau:

Tạo build.xml trong X:/your/phóng/thư mục với nội dung tiếp theo:

<target name="mytarget"> 
    <subant target="debug"> 
     <fileset dir="Y:/any/folder/with" includes="build.xml"/> 
    </subant> 
</target> 

Sau đó, bạn có thể thực hiện kiến ​​mytarget từ X: thư mục// phóng của bạn/thư mục để bắt đầu xây dựng của bạn Y: /any/folder/with/build.xml

Cập nhật:

Bạn có thể ghi đè lên basedir tài sản cho subant xây dựng như thế này:

<subant target="debug"> 
     <property name="basedir" value="./any/dir/with/project"/> 
     <fileset dir="Y:/any/folder/with" includes="build.xml"/> 
    </subant> 
+0

Câu trả lời hay. Đây là những gì tôi đã tìm kiếm chính xác. Cảm ơn vir chúng tôi – paary

+0

vui vì nó đã giúp! :) –

1

giải pháp khác (nếu nó có ý nghĩa hơn trong một số trường hợp) có thể là để override basedir qua var nhiệm vụ từ phần mở rộng antcontrib như đã mô tả ở đây: https://stackoverflow.com/a/25786329/1915920