【问题标题】:Expanding parameters in Apache Ant exec taskApache Ant exec 任务中的扩展参数
【发布时间】:2015-02-08 14:58:48
【问题描述】:

我有一个构建,它需要一个任务来启动一个进程,并在最后杀死它。

我有一个包含进程 ID 的文件,但不知道如何让 ant 扩展命令替换,以便将该文件的内容传递给 kill 命令。

我试过了:

<target name="kill process">
    <exec executable="kill">
        <arg value="`cat process-file`"/>
    </exec>

...

还有:

<target name="kill process">
    <exec executable="kill">
        <arg value="$(cat process-file)"/>
    </exec>

但两者都转换为字符串文字,因此导致: [exec] kill: failed to parse argument: '$(cat process-file)'

有没有办法让蚂蚁扩展这些?或者完全不同的途径来实现这一点?

【问题讨论】:

    标签: ant build-process command-substitution


    【解决方案1】:

    您可以使用 Ant 的 loadfile 任务将文件的内容读入属性中。

    <loadfile srcFile="process-file" property="pid">
      <filterchain>
        <striplinebreaks/>
      </filterchain>
    </loadfile>
    <exec executable="kill">
        <arg value="${pid}"/>
    </exec>
    

    编辑:添加过滤器链来处理额外的空格

    【讨论】:

    • 这越来越近了,但由于某种原因,该属性前面有一个选项卡,还有一个换行符;这导致 kill 再次失败:解析参数失败:'15718 [exec]'
    • 啊……看来您还必须使用 filterchain + striplinebreaks 才能完成这项工作。如果您可以将这些添加到您的答案中,那么我可以选择它。
    • 啊,谢谢,没有想到 pid 文件包含额外的空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2013-06-19
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多