我想在运行时在POM中定义artifactId。我从this question的答案中知道,这是错误的练习,应该使用Maven原型,但我真的很想知道这是否可能。
目前,我有一个具有这样一个artifactId的POM:
<artifactId>myproject${var}</artifactId>
通过在命令行上设置变量,我可以成功地构建项目:
mvn install -Dvar=justatest
现在可以在运行时更改这个输入变量了吗?例如,将其转换为大写(例如用gmaven-plugin)还是类似的?
发布于 2015-09-30 10:56:40
不能在构建时更改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}
。您需要将正确的阶段设置为上面的片段,以匹配您的构建过程。
https://stackoverflow.com/questions/32860424
复制相似问题