如何在Maven中提示用户输入?

时间:2013-10-16 21:54:02

标签: java maven plugins input

我正在写一个Maven插件,我想提示一个简单的用户输入,并决定是否暂停插件的执行。

我想做这样的事情:

$> mvn myplugin:run

[MAVEN] would you like to continue? [default value: y] _

我已尝试使用maven-antrun-plugin,如here所述,但在这种情况下,Maven在构建插件时会获得用户输入。相反,我想在用户从已声明我的插件的其他应用程序中运行我的插件时检索输入(令人困惑?)

3 个答案:

答案 0 :(得分:4)

使用Prompter组件并将其注入您的插件中(假设您使用Maven plugin annotations,如果不使用equivalent javadoc tags):

@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>

发布插件使用提示器组件来提示用户输入标签和版本以及原型插件。

答案 1 :(得分:0)

不要这样做。如果需要向mojo提供数据,请通过配置进行。

Maven构建的行为应完全基于您的POM和目标&amp;提供给Maven命令行的选项。如果您允许用户在构建期间提供其他信息,则您的POM将不再完整地描述您的项目。

此外,它会阻止任何自动构建服务器完成其工作。

答案 2 :(得分:0)

作为变体,不像羊毛.in.silver写的那样打破maven方式,你可以使用shell脚本来提示值,然后用收集的值作为参数调用maven