2009-06-24 68 views
10

Tôi muốn đổi tên thư mục ứng dụng của mình bằng dấu thời gian và sau đó giải nén phiên bản ứng dụng mới hơn bằng cùng một tên thư mục. Sử dụng Ant (move task), có vẻ như bạn có thể di chuyển nội dung từ một thư mục này sang thư mục khác.Làm cách nào để đổi tên thư mục bằng Ant?

Đây có phải là cách duy nhất tôi có thể thực hiện việc này trong Ant không?

Trả lời

0

Tôi nghĩ rằng nhiệm vụ di chuyển là những gì bạn muốn. Có lý do nào bạn không muốn sử dụng nó?

Có vẻ như bạn đang đề xuất di chuyển thư mục chứa tệp build.xml của bạn. Có đúng không? Nếu vậy, tôi tưởng tượng kiến ​​có thể không quá hạnh phúc.

+1

Ngay bây giờ trong tệp build.xml của tôi, tôi có nó để xóa thư mục và sau đó giải nén tệp zip để tự động tạo thư mục mới có cùng tên thư mục. Bây giờ thay vì xóa thư mục, tôi muốn đổi tên nó thành dấu thời gian được nối thêm vào tên thư mục. – JLau

4

Chỉ cần đánh vần ra câu trả lời đã được đưa ra, đó là chính xác ...

<project default="move"> 
    <tstamp/> 
    <target name="move"> 
     <move file="foo" tofile="foo-${TSTAMP}"/> 
    </target> 
</project> 

này di chuyển foo để foo-hhmm.

Ví dụ:

$ find . 
. 
./build.xml 
./foo 
./foo/bar.txt 
$ 
$ ant 
Buildfile: C:\tmp\ant\build.xml 

move: 

BUILD SUCCESSFUL 
Total time: 0 seconds 
$ 
$ find . 
. 
./build.xml 
./foo-1145 
./foo-1145/bar.txt 
$ 
+0

Tôi thay đổi tofile thành todir và nó hoạt động tốt. Cảm ơn. – JLau

+0

Tôi đã thử tofile và todir, không hoạt động. Nó phàn nàn rằng 'foo' không thể được tìm thấy - nó tồn tại, nhưng là một thư mục. –

+0

Làm việc cho tôi. Là foo trong cùng một thư mục như build.xml? – sudocode

18

Động thái này nhiệm vụ không làm những gì bạn đang sau, nhưng việc đặt tên là một chút bối rối. Nếu bạn xem thư mục của bạn là 'tệp' theo nghĩa Java - một tệp là một xử lý hệ thống tệp có thể đại diện, trong số những thư mục khác hoặc tệp theo nghĩa thông thường - thì nhiệm vụ di chuyển có ý nghĩa.

Vì vậy, sau

<move file="mySourceDirName" tofile="myTargetDirName"/> 

phương tiện đổi tên/di chuyển thư mục mySourceDirName được thay myTargetDirName.

Sau đây rồi

<move file="mySourceDirName" todir="someExistingDir"/> 

nghĩa để di chuyển các thư mục mySourceDirName để trở thành một thư mục con của thư mục someExistingDir hiện có.

Vì vậy, trong kiến ​​thuộc tính 'tệp' đề cập đến mục tiêu được đề cập và thuộc tính 'todir' đề cập đến thư mục là vị trí mẹ mới cho tệp hoặc thư mục đích.

+0

Cảm ơn, đã làm việc tốt cho tôi. –

1

Nếu bạn muốn đổi tên thư mục, bạn có thể sử dụng thẻ di chuyển nhưng có một cách khó hiểu để sử dụng nó. Như @phasmal cho biết bạn có thể sử dụng di chuyển nhưng nó di chuyển thư mục bên trong thư mục mong muốn. Nếu bạn chỉ muốn đổi tên, hãy thử làm theo.

<move todir="newname"> 
    <fileset dir="directory tobe renamed "/> 
</move> 
Các vấn đề liên quan