如何处理的Maven shell提示符(How to handle shell prompt in

2019-10-18 04:06发布

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

“进入‘YES’有这样的剧本继续:”

我如何告诉行家1)解析提示,2)输入YES时,看到的提示吗?

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

谢谢。

Answer 1:

我有一个类似的问题。 我的一个插件被设计用来显示一些信息给用户,只有确认后进行。 当我不得不使用它我们的CI构建服务器上,我结束了这一点:

回声 'Y' | MVN释放:支...

我假设你既可以用这种方法去(如果你的作品),或使用gmaven插件你的shell脚本的执行,将写入所需的字符串输入系统之前执行Groovy代码。



Answer 2:

你在非交互模式下使用交互式脚本。 该脚本应该有一个参数(即--non交互,或-y / -n等),应禁用提示,并迫使答案。



Answer 3:

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



Answer 4:

最后我用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>


Answer 5:

你可以使用期望 ,写一个包装脚本,反过来,调用交互脚本。

要在Ubuntu上安装它:

sudo apt-get install expect

这个脚本应该工作:

#!/usr/bin/expect

spawn ./test.sh
expect "Enter 'YES' to have this script continue:"
send "YES\r"
interact


文章来源: How to handle shell prompt in maven
标签: maven maven-3