2

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

然后我想通过 Maven Ant Tasks 从我的 Ant 脚本中运行 Maven,它应该用属性文件的属性替换我的 pom.xml 中的预定义属性。我不想更改 pom.xml。

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

顺便说一句,我已经尝试过仅使用 maven 的类似方法,目前这似乎是不可能的

4

2 回答 2

7

您可以使用重新定义 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 任务相同的方式传递命令参数。

于 2010-05-17T11:59:37.543 回答
1

您是否尝试通过<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

于 2010-05-18T13:26:05.803 回答