2011-06-10 39 views
5

Từ http://ant.apache.org/manual/Tasks/exec.html:Làm thế nào để thực thi một ứng dụng tương tác từ kịch bản xây dựng Ant?

Lưu ý rằng bạn không thể tương tác với các chương trình, biểu tượng forked , cách duy nhất để gửi đầu vào cho nó là thông qua các đầu vào và thuộc tính inputstring. Cũng lưu ý rằng từ Ant 1.6, bất kỳ nỗ lực nào để đọc đầu vào trong chương trình được chia đôi sẽ nhận được EOF (-1). Đây là thay đổi từ Ant 1.5, nơi nỗ lực này sẽ chặn.

Làm cách nào để khởi chạy và tương tác với chương trình bảng điều khiển tương tác từ kiến?

Điều tôi muốn làm tương tự như chức năng drush sqlc, khởi chạy trình thông dịch khách hàng mysql bằng thông tin cơ sở dữ liệu thích hợp, nhưng không giới hạn trong trường hợp sử dụng này.

Dưới đây là một trường hợp sử dụng mẫu:

<project name="mysql"> 
    <target name="mysql"> 
    <exec executable="mysql"> 
     <arg line="-uroot -p"/> 
    </exec> 
    </target> 
</project> 

Khi chạy sử dụng kiến:

$ ant -f mysql.xml mysql 
Buildfile: /home/ceefour/tmp/mysql.xml 

mysql: 
Enter password: 

BUILD SUCCESSFUL 
Total time: 2 seconds 

Sau khi nhập mật khẩu, nó ngay lập tức thoát ra.

Hãy so sánh điều này với những gì xảy ra khi thực hiện trực tiếp trên vỏ (hành vi dự kiến):

$ mysql -uroot -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 1122 
Server version: 5.1.58-1ubuntu1 (Ubuntu) 

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 
This software comes with ABSOLUTELY NO WARRANTY. This is free software, 
and you are welcome to modify and redistribute it under the GPL v2 license 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

Trả lời

0

Tôi đã thử chạy trên cosnole và nếu bạn không ngã ba nó hoạt động. Như đã đề cập trong tài liệu.

Bên cạnh nhật thực còn có các cách bổ sung để định cấu hình inputhandler.

Như được công nhận tại đây. http://www.coderanch.com/t/419646/tools/java-program-accept-user-input

Một cách sạch để có được công việc này http://www.myeclipseide.com/PNphpBB2-viewtopic-t-25337.html

+0

Nó không hoạt động trong trường hợp sử dụng của tôi (xem câu hỏi đã sửa đổi). Bạn có thể kiểm tra kịch bản Ant của tôi trong hệ thống của bạn và cho tôi biết nếu nó hoạt động không? –

1

Bạn có thể khởi chạy lệnh của bạn thông qua một vỏ, chuyển hướng tiêu chuẩn đầu vào/đầu ra/lỗi từ/đến/để /dev/tty, tương ứng với controlling terminal của quá trình .

<target name="dbshell" description="Open a shell for interactive tasks"> 
    <exec executable="/bin/sh"> 
    <arg value="-c"/> 
    <arg value="mysql -u root -p &lt; /dev/tty &gt; /dev/tty 2&gt; /dev/tty"/> 
    </exec> 
</target> 
Các vấn đề liên quan