我正在编写一个 Maven 插件,我想提示一个简单的用户输入并决定是否停止插件的执行。
我想做这样的事情:
$> mvn myplugin:run
[MAVEN] would you like to continue? [default value: y] _
我试过使用这里描述的 maven-antrun-plugin ,但是在这种情况下,当我构建我的插件时,Maven 会获取用户输入。相反,我想在用户从已声明我的插件的其他应用程序中运行我的插件时检索输入(令人困惑?)
使用Prompter组件并将其注入您的插件中(假设您使用的是Maven 插件注释,如果不使用等效的 javadoc 标记):
@Component
private Prompter prompter;
并使用它:
String name = prompter.prompt("Please enter your name");
在插件的 POM 中引入此依赖项:
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-interactivity-api</artifactId>
<version>1.0-alpha-6</version>
</dependency>
发布插件使用提示器组件来提示用户输入标签和版本以及原型插件。
不要这样做。如果您需要向 mojo 提供数据,请通过配置来完成。
根据您的 POM 以及提供给 Maven 命令行的目标和选项,您的 Maven 构建的行为应该是完全可预测的。如果您允许用户在构建过程中提供其他信息,您的 POM 将不再完整地描述您的项目。
此外,它会阻止任何自动构建服务器完成其工作。
作为变体,为了不破坏 maven 的方式,就像 wool.in.silver 写的那样,您可以使用 shell 脚本来提示值,然后使用收集的值作为参数调用 maven