使用Maven Ant Tasks在运行时更改pom.xml中的属性。可能吗?

时间:2010-05-17 11:50:58

标签: ant properties maven pom.xml

我有以下用例: 我的应用程序以Ant脚本启动,它向用户询问有关项目配置的几个问题(数据库设置等)。这些设置存储在属性文件中。

然后我想通过Maven Ant Tasks在我的Ant脚本中运行Maven,它应该用我的pom.xml中的预定义属性替换properties-file的属性。 我不想改变pom.xml。

有办法做到这一点吗? 提前谢谢!

BTW i already tried a similar approach with maven only, which seems to be impossible at the moment

2 个答案:

答案 0 :(得分:7)

您可以使用-D在maven命令行上重新定义属性,这些属性将覆盖项目文件中的属性。

例如,在pom.xml中

  <properties>
     <myProp>A</myProp>
  </properties>

在ant build.xml中,您可以调用mvn命令行,如

mvn -DmyProp=B install

将myProp设置为项目中的B. mvn ant task page讨论了使用宏来调用maven命令行。这可以很容易地定制,以传递其他属性。

要仅在maven中执行此操作,请使用exec插件启动maven,以与使用ant:java任务完成相同的方式传递命令参数。

答案 1 :(得分:1)

您是否尝试通过<copy> ant任务动态替换属性?

假设您的属性位于文件settings.properties中。在pom.xml中定义要替换的属性,并在其周围添加@,您可以复制pom文件并同时替换某些属性。 E.g:

<copy file='pom.xml' toFile='real-pom.xml'>
  <filterset filtersfile='settings.properties' />
</copy>

然后你调用maven:

  

mvn -f real-pom.xml