我想在运行时在POM中定义artifactId。我从this question的答案中知道这是不好的做法,应该使用Maven原型,但我真的想知道它是否可行。
目前我有一个像这样的artifactId的POM:
<artifactId>myproject${var}</artifactId>
我可以通过在命令行上设置变量来成功构建项目:
mvn install -Dvar=justatest
现在可以在运行时更改此输入变量吗?例如,将其转换为大写(例如使用gmaven-plugin)或类似的?
答案 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}
。您需要将正确的阶段设置为上面的代码段以匹配您的构建过程。