Ant在运行时选择文件的任务?

时间:2012-08-20 19:38:50

标签: ant

我需要在运行时使用Ant选择一个文件,现在我设法用exec和zenity这样做:

<exec executable="zenity" outputproperty="file">
  <arg line="--file-selection" />
  <arg line='--title "Pick a file to upload"' />
</exec>
<echo message="Uploading ${file} ..."/>

我想知道是否有任务要执行此操作,因为这个是依赖于平台的。

3 个答案:

答案 0 :(得分:1)

通常,在运行Ant时不使用用户输入。您可以使用属性启动Ant时选择文件:

 $ ant -Dfile=my_file

 <project>
     <echo>You're using file "${file}"</echo>
 </project>

但是,您可以使用<input>任务:

<project>
    <input addproperty="file"
    defaultvalue="foo.txt"
    message="What file do you want?"/>
    <echo>You've chosen file "${file}"</echo>
</project>

 $ ant
 What file do you want? [foo.txt]
 my.file.txt
 You've chosen file "my.file.txt"

这样做你想要的吗?

答案 1 :(得分:0)

我最终创建了一个jar文件来执行脏工作,这就是我所做的:

1-下载并编译了这个FileChooser示例:http://www.roseindia.net/tutorial/java/core/files/javafilechooser.html,只将f.getName()更改为f.getAbsolutePath()

2-添加了一个java任务:

<java jar="FileChooser.jar" outputproperty="filepath" fork="true"/>

现在我只需要在其他平台上携带FileChooser.jar,它不是完美的但可以胜任。

答案 2 :(得分:-2)

AntForm提供了一个fileSelectionProperty表单,在这里也可能会有所帮助。这是如何使用它的一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<!--
getFile
    - get file name with a file selection box
-->
<project name="files" default="-getFile" basedir="."
            xmlns:antform="antlib:com.sardak.antform">

    <!--
    antform
    http://antforms.sourceforge.net/
    provides pop-up forms and menus for user input
        <antform>
        <antmenu>
    -->
    <taskdef uri="antlib:com.sardak.antform"
            resource="com/sardak/antform/taskdefs.properties"
            classpath="../../lib/antform.jar"/>

    <target name="-getFile">

        <!--
        pop-up form
        user selection form for the file selection
        -->
        <antform:antform title="Please Select a File">
            <fileSelectionProperty label="File: "
                    property="file.selection"
                    directoryChooser="false"/>
            <controlbar>
                <button label="OK" type="ok"/>
                <button label="QUIT" target="Quit"/>
            </controlbar>
        </antform:antform>
        <echo message="You chose file ${file.selection}"/>
    </target>

</project>