如何在maven中处理shell提示符

时间:2013-05-23 14:27:28

标签: maven maven-3

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

“输入'YES'以使此脚本继续:”

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

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

感谢。

5 个答案:

答案 0 :(得分:0)

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

  回声'y'| mvn release:branch ...

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分: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>

答案 4 :(得分: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