java - Ant 在 <exec> 任务中找不到通配符目录

标签 java jenkins ant

我正在使用 Jenkins/ant 将我的应用程序部署到远程服务器。

我的 Ant 遇到问题 <scp>尝试 scp 一组由通配符指定的目录的任务(例如 scp -r my/path/and/directory_* user@remote:/remote/path/to/directory),所以我一直在尝试运行它使用<exec>而是任务。

参见下面的代码:

<property name="built_directories" value="${workspace}/build_\*" />

<exec dir="${workspace}" executable="scp" failonerror="true">
    <arg line="-r -i ${user.home}/.ssh/id_rsa ${built_directories} deployer@@@{SERVER}:${remote_build_dir}"></arg>
</exec>

Jenkins/ant 给我错误:

[exec]/var/lib/jenkins/jobs/app-head-stage-deployment/workspace/build_*:没有这样的文件或目录

我也尝试过以下方法,但收到相同的错误:

<exec dir="${workspace}" executable="scp" failonerror="true">
     <arg value="-r"></arg>
     <arg value="-i"></arg>
     <arg value="${user.home}/.ssh/id_rsa"></arg>
     <arg value="${built_directories}"></arg>
     <arg value="deployer@@@{SERVER}:${remote_build_dir}"></arg>
</exec>

我一直试图弄清楚是否需要以某种方式转义星号以便 shell 正确解析它,但没有找到太多信息。

编辑:

尝试@whiskeyspider的配置,见下文:

<exec dir="${workspace}" executable="sh" failonerror="true">
    <arg value="-c" />
    <arg value="scp" />
    <arg value="-r" />
    <arg value="-i" />
    <arg value="${user.home}/.ssh/id_rsa" />
    <arg value="${built_directories} deployer@@@{SERVER}:${remote_build_dir}" />
</exec>

我尝试将最后一个参数分成单独的 <arg>元素也是如此,但现在我收到以下错误:

[exec] 用法:scp [-12346BCpqrv] [-c 密码] [-F ssh_config] [-i 身份文件] [exec] [-l 限制] [-o ssh_option] [-P 端口] [-S 程序] [exec] [[user@]host1:]file1 ... [[user@]host2:]file2

我猜这意味着它无法正确识别参数。

最佳答案

您需要启动 shell,以便扩展通配符。例如:

<exec executable="sh">
    <arg value="-c"/> 
    <arg value="scp"/>
    ...
</exec>

关于java - Ant 在 <exec> 任务中找不到通配符目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34665320/

相关文章:

java - 一旦一个对象被取出来更新它的优先级,如何保持一个对象在优先级队列中的优先级?

java - 无法单击位于 <div> 使用 Selenium WebDriver 制作的弹出窗口上的按钮

groovy - 从 groovy 系统脚本在 Jenkins UI 上显示信息的最简单方法是什么?

android - 由于缺少 android SDK,Jenkins 构建失败

linux - 将 ant1.8 或更高版本安装到 Scientific Linux 6

xml - 如何使用 Ant 替换 XML 字段的值?

java - C++ 非静态回调和 JNA

java - Android应用程序安装后如何在内部存储上创建目录?

amazon-web-services - ECR 中的 Docker 图像标记

ant - 拆分 Ant 文件 - 推断为更小的文件?有干净的方法或最佳实践吗?