我有以下用例: 我的应用程序以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)
答案 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