1

我有一个执行 shell 脚本的 pom.xml 文件,并且 shell 脚本有提示

“输入‘YES’让这个脚本继续:”

我如何告诉 maven 1)解析提示,2)在看到提示时输入 YES?

或者至少,上面第二个问题的答案?

谢谢。

4

5 回答 5

0

您可以使用Expect,编写一个包装脚本,然后调用交互式脚本。

在 Ubuntu 上安装它:

sudo apt-get install expect

该脚本应该可以工作:

#!/usr/bin/expect

spawn ./test.sh
expect "Enter 'YES' to have this script continue:"
send "YES\r"
interact
于 2013-06-02T17:53:05.577 回答
0

我有一个类似的问题。我的一个插件旨在向用户显示一些信息,并且只有在确认后才能继续。当我不得不在我们的 CI 构建服务器上使用它时,我得到了这样的结果:

回声'y' | mvn 发布:分支 ...

我假设您可以使用这种方法(如果它适合您),或者gmaven在执行您的 shell 脚本之前使用插件来执行 Groovy 代码,该脚本会将所需的字符串写入系统输入。

于 2013-05-23T14:41:23.323 回答
0

我最终使用了https://bitbucket.org/atlassian/bash-maven-plugin并在我的 pom.xml 文件中有这个

    <plugin>
        <groupId>com.atlassian.maven.plugins</groupId>
        <artifactId>bash-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <executions>
            <execution>
                <id>execute-shell</id>
                <phase>generate-sources</phase>
                <goals>
                    <goal>run</goal>
                </goals>
                <configuration>
                    <script>./build_dm.sh --accept-warning</script>
                </configuration>
            </execution>
        </executions>
    </plugin>
于 2013-05-23T18:42:19.370 回答
0

您在非交互模式下使用交互脚本。该脚本应该有一个参数(即--non-interactive,或-y / -n 等),它禁用提示并强制回答。

于 2013-05-23T14:46:50.370 回答
0

安装脚本yes | ./script在 pom.xml 中运行

于 2013-05-23T14:55:15.033 回答