如何在运行时设置Maven artifactId?

时间:2015-09-30 07:35:59

标签: maven pom.xml

我想在运行时在POM中定义artifactId。我从this question的答案中知道这是不好的做法,应该使用Maven原型,但我真的想知道它是否可行。

目前我有一个像这样的artifactId的POM:

<artifactId>myproject${var}</artifactId>

我可以通过在命令行上设置变量来成功构建项目:

mvn install -Dvar=justatest

现在可以在运行时更改此输入变量吗?例如,将其转换为大写(例如使用gmaven-plugin)或类似的?

1 个答案:

答案 0 :(得分:2)

无法在构建时更改artifactId。它是Maven坐标(groupId:artifactId:version)的一部分,因此必须修复它。

您在使用maven-antrun-plugin构建期间可以更改的所有其他参数。

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <id>touppercase</id>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <property name="varUpper" value="${var}"/>
                    <script language="javascript"> <![CDATA[
                        property = project.getProperty("varUpper");
                        project.setProperty("varUpper", property.toUpperCase());
                    ]]> </script>
                </target>
                <exportAntProperties>true</exportAntProperties>
            </configuration>
        </execution>
    </executions>
</plugin>

执行完毕后,Maven会有一个名为${varUpper}的新属性,它是大写的${var}。您需要将正确的阶段设置为上面的代码段以匹配您的构建过程。