我有一个执行 shell 脚本的 pom.xml 文件,并且 shell 脚本有提示
“输入‘YES’让这个脚本继续:”
我如何告诉 maven 1)解析提示,2)在看到提示时输入 YES?
或者至少,上面第二个问题的答案?
谢谢。
您可以使用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
我有一个类似的问题。我的一个插件旨在向用户显示一些信息,并且只有在确认后才能继续。当我不得不在我们的 CI 构建服务器上使用它时,我得到了这样的结果:
回声'y' | mvn 发布:分支 ...
我假设您可以使用这种方法(如果它适合您),或者gmaven
在执行您的 shell 脚本之前使用插件来执行 Groovy 代码,该脚本会将所需的字符串写入系统输入。
我最终使用了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>
您在非交互模式下使用交互脚本。该脚本应该有一个参数(即--non-interactive,或-y / -n 等),它禁用提示并强制回答。
安装脚本yes | ./script
在 pom.xml 中运行