【问题标题】:Ant EXEC failing to run bash scriptAnt EXEC 无法运行 bash 脚本
【发布时间】:2010-11-15 21:17:29
【问题描述】:

我正在尝试使用 ant 来运行 bash 脚本。

我发现 exec 指令是工作的工具

我创建了一个 bash 脚本 test.sh 在我的蚂蚁目标中我添加了:

<project basedir=".">
    <property name="temp.deployment.dir" value="temp_deployment_dir"/>
    <property name="temp.dir" value="temp_upload_dir"/>
    <property name="src.dir" value="www"/>
    <property name="js.dir" value="${src.dir}/public/js"/>
    <property name="css.dir" value="${src.dir}/public/css"/>
    <property name="img.dir" value="${src.dir}/public/images/"/>
    <target name="clean">
            <delete dir="${temp.dir}"/>
    </target>
    <target name="update-statics">
            <mkdir dir="${temp.dir}"/>
            <!--TODO: add statics in -->
    </target>
    <target name="deploy">
            <mkdir dir="${$temp.deployment.dir}"/>
            <copy todir="${temp.deployment.dir}">
                    <fileset dir="${src.dir}"/>
            </copy>
            <exec executable="bash" newenvironment="false" dir=".">
                <arg value="cmd_update.sh"/>
            </exec>
     </target>
</project>

我运行它时构建成功,但 test.sh 从未运行。

我已经用谷歌搜索并搜索了我可能做错的地方,但因为没有错误,我在调试它时遇到了麻烦。有谁知道 exec 指令的正确用法,或者我显然做错了什么。据我所知,我的做法与我发现的其他 exec 示例相同。

【问题讨论】:

标签: ant exec


【解决方案1】:

如果您的 Bash 脚本中有 shebang,并且您的脚本是可执行的,则您不需要将 bash 作为命令包含在内。 (当然,我假设是 Linux、Unix 或 Mac)。

<exec executable="${path.to.command}/cmd_update.sh"
    failonerror="true"
    osfamily="unix"/>

始终将failonerror 设置为true 并始终设置osfamily

您可能还想设置其他内容,例如存储 STDOUTSTDERR 的属性。您也可以通过&lt;arg value&gt; 子任务传递参数。

我不会使用searchpath 参数,因为这可能是一个安全漏洞。

【讨论】:

  • 这帮助我解决了一个类似的问题。谢谢,这为我节省了很多时间。
【解决方案2】:

首先,当我看到一个高管时,我通常会畏缩,这通常是有臭味的。 您希望在使用 exec 时将 failonerror 设置为“true”,并确保您的脚本在适当的情况下以正确的返回码退出。

你也不需要调用 bash,你可以直接调用脚本——确保它是可执行的。

ant -v 的输出是相关的。

【讨论】:

    【解决方案3】:

    试试:

    <exec executable="**/bin/**bash" newenvironment="false" dir=".">  
        <arg value="cmd_update.sh"/>             
    </exec>
    

    【讨论】:

      猜你喜欢
      • 2015-02-23
      • 1970-01-01
      • 2011-08-10
      • 2014-02-20
      • 2012-12-15
      • 2012-09-14
      • 2013-01-12
      • 2023-03-14
      • 2016-10-20
      相关资源
      最近更新 更多