首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Ant运行带有命令行参数的程序

使用Ant运行带有命令行参数的程序
EN

Stack Overflow用户
提问于 2010-09-17 05:16:28
回答 5查看 134.1K关注 0票数 57

我的程序获取命令行参数。当我使用Ant时,如何传递它?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-09-17 06:13:39

扩展了Richard Cook的答案。

下面是运行任何程序(包括但不限于ant程序)的Java任务:

代码语言:javascript
复制
<target name="run">
   <exec executable="name-of-executable">
      <arg value="${arg0}"/>
      <arg value="${arg1}"/>
   </exec>
</target>

下面是从.jar文件运行Java程序的任务:

代码语言:javascript
复制
<target name="run-java">
   <java jar="path for jar">
      <arg value="${arg0}"/>
      <arg value="${arg1}"/>
   </java>
</target>

您可以像这样从命令行调用这两种方法:

代码语言:javascript
复制
ant -Darg0=Hello -Darg1=World run

确保使用-Darg语法;如果您运行以下命令:

代码语言:javascript
复制
ant run arg0 arg1

然后,ant将尝试运行目标arg0arg1

票数 78
EN

Stack Overflow用户

发布于 2012-02-11 20:58:56

如果您不想为每个可能的参数处理单独的属性,我建议您使用:

代码语言:javascript
复制
<arg line="${args}"/>

您可以使用具有unless属性的特定目标来检查是否未设置该属性,并在其中执行以下操作:

代码语言:javascript
复制
<input message="Type the desired command line arguments:" addProperty="args"/>

将所有这些放在一起可以得到以下结果:

代码语言:javascript
复制
<target name="run" depends="compile, input-runargs" description="run the project">
  <!-- You can use exec here, depending on your needs -->
  <java classname="Main">
    <arg line="${args}"/>
  </java>
</target>
<target name="input-runargs" unless="args" description="prompts for command line arguments if necessary">
  <input addProperty="args" message="Type the desired command line arguments:"/>
</target>

您可以按如下方式使用它:

代码语言:javascript
复制
ant
ant run
ant run -Dargs='--help'

前两个命令将提示输入命令行参数,而后两个命令则不会。

票数 29
EN

Stack Overflow用户

发布于 2010-09-17 06:41:00

将参数传递到构建中的唯一有效机制是使用Java属性:

代码语言:javascript
复制
ant -Done=1 -Dtwo=2

以下示例演示了如何检查并确保预期的参数已传递到脚本中

代码语言:javascript
复制
<project name="check" default="build">

    <condition property="params.set">
        <and>
            <isset property="one"/>
            <isset property="two"/>
        </and>
    </condition>

    <target name="check">
        <fail unless="params.set">
        Must specify the parameters: one, two
        </fail>
    </target>

    <target name="build" depends="check">
        <echo>
        one = ${one}
        two = ${two}
        </echo>
    </target>

</project>
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3730880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档