有没有办法捕捉行家用户输入,并将其分配给Maven的财产?(Is there a way to ca

2019-06-26 01:25发布

  1. 有没有一种方法来暂停行家执行流程,以提供一个命令提示,以便用户可以输入文本。
  2. 然后,我想提供的文本存储在一个maven性能。
  3. 如果用户输入可能被掩盖,这将是一个奖金。

这将是非常有用的,以避免存储POM密码。

非常感谢

Answer 1:

您可以使用maven-antrun-插件吸引用户的输入。 下面的例子说明如何询问当前用户的新的项目版本。

    <profile>
        <id>change-version</id>
        <build>
            <defaultGoal>validate</defaultGoal>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.7</version>
                    <executions>
                        <execution>
                            <id>catch-new-version</id>
                            <goals>
                                <goal>run</goal>
                            </goals>
                            <phase>validate</phase>
                            <configuration>
                                <target>
                                    <!-- == catch new version in a prompt == -->
                                    <input
                                        message="Please enter the new SNAPSHOT version (current is '${project.version}'): "
                                        addproperty="new-user-version" />
                                </target>
                                <exportAntProperties>true</exportAntProperties>
                            </configuration>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.ant</groupId>
                            <artifactId>ant</artifactId>
                            <version>1.8.4</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>1.3.1</version>
                    <executions>
                        <execution>
                            <id>set-new-version</id>
                            <goals>
                                <goal>set</goal>
                            </goals>
                            <phase>validate</phase>
                            <configuration>
                                <generateBackupPoms>false</generateBackupPoms>
                                <newVersion>${new-user-version}</newVersion>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

您可以通过调用运行这个功能:

mvn -N -P change-version

几点说明:

  • -N-选项允许不递归到子项目。
  • 使用org.apache.ant:蚂蚁:1.8.4避免https://issues.apache.org/bugzilla/show_bug.cgi?id=51161
  • 使用Maven 3.0.4
  • 文档: Maven的antrun-插件 , 输入标签


Answer 2:

如果你在你的POM添加属性,如下所示:

<properties>
    <db.password></db.password>
</properties>

而在你的POM中使用它的地方是这样的:

<someTag>${db.password}</someTag>

然后,您可以设置命令行属性:

$ mvn -Ddb.password="DonaldDuck" install

但它不是像交互式命令提示符。



文章来源: Is there a way to capture user input in maven and assign it to a maven property?