【问题标题】:Passing ant command line options to an exec'd ant process?将ant命令行选项传递给exec'd ant进程?
【发布时间】:2010-11-30 01:34:29
【问题描述】:

我正在使用 ant 来构建 Java 和 C++ (JNI) 代码的混合体,这些代码构成了这里的客户端项目。我最近将构建的 C++ 部分切换为使用带有 cpptasks 的 ant 来构建 C++ 代码,而不是让 ant 调用构建代码所需的各种版本的 Visual Studio。

为了让它工作,在触发另一个执行基于 cpptasks 的 ant C++ 构建。从本质上讲,主要 ant 构建文件中与 C++ 相关的构建任务对于 Windows 如下所示:

<target name="blah">
    <exec executable="cmd" failonerror="true">
      <arg value="/C"/>
      <arg line="&quot;${cpp.compiler.path}/vsvars32.bat&quot; &amp;&amp; %ANT_HOME%/bin/ant -f cpp-build.xml make-cpp-stuff" />
    </exec>
</target>

没有办法摆脱 vsvars32.bat 调用,因为代码必须使用多个 VS 版本以及在任何 Visual Studio 设置都不能成为构建用户环境的一部分的构建机器上构建。

上述方法有效,但我遇到的问题是我想将某些命令行选项(如 -verbose、-quiet、-emacs)传递给子 ant(如果它们已传递给父级)蚂蚁。是否可以通过提供给父蚂蚁的命令行选项进行访问?请注意,我说的不是通常的属性定义,而是 ant-internal 选项。

【问题讨论】:

    标签: c++ ant options


    【解决方案1】:
    <target name="blah">
        <property environment="env"/>
        <exec executable="cmd" failonerror="true">
          <arg value="/C"/>
          <arg value="${cpp.compiler.path}/vsvars32.bat"/>
          <arg value="&amp;&amp;"/>
          <arg value="${env.ANT_HOME}/bin/ant.bat"/>
          <arg value="-f" />
          <arg value="cpp-build.xml" />
          <arg value="make-cpp-stuff" />
        </exec>
    </target>
    

    加法

    您可以创建一个外部批处理文件来运行 vsvars 和 ant,然后您将只需要创建一个进程。我相信 && 没有像你期望的那样工作:

    run-ant-vs.bat:
    
    ....\vsvars32.bat
    %ANT_HOME\bin\ant.bat -f cpp-build.xml make-cpp-stuff
    

    【讨论】:

    • 感谢您指出如何将命令行拆分为 - 这最终帮助我正确地做到了这一点。也就是说,它并不能解决我遇到的实际问题,即如果调用目标“blah”的蚂蚁有这些选项或这些选项之一,则将 -emacs/-verbose/-quit 传递给子蚂蚁命令行。顺便说一句,我还冒昧地在 arg 值列表中插入了一个重要的缺失元素。
    【解决方案2】:

    我不确定这是否可以帮助您。 Java客户端执行是否使用你执行ant build时传递的参数,你可以尝试改编这个例子(exec比java task更通用,但是是一个类似的概念)

    蚂蚁任务示例:

    <target name="run">
      <java classname="my.package.Client" fork="true" failonerror="true">
        <arg line="-file ${specific.file}"/>
      </java>
    </target>
    

    调用示例:

    ant run -Dspecific.file=/tmp/foo.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 2014-06-28
      • 2011-10-12
      相关资源
      最近更新 更多