【问题标题】:pass line arguments to main from ant将行参数从 ant 传递给 main
【发布时间】:2014-06-28 12:21:17
【问题描述】:

我的问题是如何使用 ant 捕获终端中的参数来使用这些参数运行 main, 示例:

    ant 1 2 3 4 5
    public static void main(String[] args)
    {
      int[] meta = {0,0,0,0,0};
      for(int i=1; i < 6; i++)
      {
        meta[i-1] = Integer.parseInt(args[i]);
      }
    }

我该怎么做,有人帮我请 C:? 这是我的 build.xml

<project name="Tarea2LP" basedir="." default="main">

<property name="src.dir"     value="src"/>
<property name="classes.dir" value="classes"/>
<property name="jar.dir"     value="jar"/>
<property name="main-class"  value="Board"/>

<target name="clean">
    <delete dir="${classes.dir}"/>
    <delete dir="${jar.dir}"/>
</target>

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">

    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
</target>

<target name="main" depends="run"/>

</project>

【问题讨论】:

标签: java ant terminal arguments main


【解决方案1】:

如果参数的数量已知,您可以使用 -D 选项传入参数,然后在“运行”任务目标中使用 'arg' 将其传递给 jar 文件,如

<target name="run" depends="jar">

    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true">
        <arg value="${arg1}"/>
        <arg value="${arg2}"/>
        <arg value="${arg3}"/>
        <arg value="${arg4}"/>
        <arg value="${arg5}"/>
    </java>
</target>

你应该调用你的 ant 文件

ant -Darg1=1 -Darg2=2 -Darg3=3 -Darg4=4 -Darg5=5

【讨论】:

  • tyyyyyyyyyy 效果很好
  • 正如我所说,它只有在参数数量已知的情况下才有效。我不认为蚂蚁支持可变参数。但是,您的 java 类正在抛出异常。它需要一个整数参数,但它收到了“${arg1}”,因为没有设置 -Darg1。您可能必须在您的 java 类中处理这个问题。
  • 您还可以使用 ant 语句为这些 args 设置默认值(例如 - 传入 ant 的值将覆盖默认值 (因为 ant 中的属性值一旦设置就无法更改)。
猜你喜欢
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 2011-02-27
  • 2017-06-14
  • 1970-01-01
  • 2022-07-26
  • 1970-01-01
  • 2021-08-30
相关资源
最近更新 更多