我有以下用例: 我的应用程序以 Ant 脚本启动,它向用户询问有关项目配置(数据库设置等)的几个问题。这些设置存储在属性文件中。
然后我想通过 Maven Ant Tasks 从我的 Ant 脚本中运行 Maven,它应该用属性文件的属性替换我的 pom.xml 中的预定义属性。我不想更改 pom.xml。
有没有办法做到这一点?提前致谢!
我有以下用例: 我的应用程序以 Ant 脚本启动,它向用户询问有关项目配置(数据库设置等)的几个问题。这些设置存储在属性文件中。
然后我想通过 Maven Ant Tasks 从我的 Ant 脚本中运行 Maven,它应该用属性文件的属性替换我的 pom.xml 中的预定义属性。我不想更改 pom.xml。
有没有办法做到这一点?提前致谢!
您可以使用重新定义 maven 命令行上的属性-D
,这些将覆盖项目文件中的属性。
例如,在 pom.xml
<properties>
<myProp>A</myProp>
</properties>
在您的 ant build.xml 中,您可以调用 mvn 命令行,例如
mvn -DmyProp=B install
这将在项目中将 myProp 设置为 B。mvn ant 任务页面讨论了使用宏来调用 maven 命令行。这可以很容易地定制,也可以传递额外的属性。
要单独在 maven 中执行此操作,请使用exec插件启动 maven,以与使用 ant:java 任务相同的方式传递命令参数。
您是否尝试通过<copy>
ant 任务动态替换属性?
假设您的属性在 file 中settings.properties
。在它们周围定义要替换的属性pom.xml
,@
您可以复制 pom 文件并同时替换一些属性。例如:
<copy file='pom.xml' toFile='real-pom.xml'>
<filterset filtersfile='settings.properties' />
</copy>
然后调用 maven:
mvn -f real-pom.xml