1

我需要在运行时使用 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} ..."/>

我想知道是否有执行此操作的任务,因为此任务取决于平台。

4

3 回答 3

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"

这是做你想做的吗?

于 2012-08-20T20:01:49.783 回答
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,它并不完美,但可以完成工作。

于 2012-08-21T15:04:28.913 回答
-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>
于 2016-08-19T11:58:11.280 回答