如何在Eclipse项目中构建期间过滤资源?

时间:2009-08-06 10:51:55

标签: eclipse configuration maven-2 ant filtering

我有一个使用多个配置文件的应用程序(这里只考虑appli.properties)。 这些文件包含几个取决于环境的值。我们可以找到一些信息,例如:

server.port=${envi.server.port}

另一方面,我有一组属性文件,每个环境一个(dev.properties,homolo.properties等)。 它们包含配置文件中某些属性的值。我们可以在这里找到这种属性:

envi.server.port=4242

我的构建由Maven2处理。一切都很好。

但是,我现在需要将我的项目导入Eclipse。 我主要关心的是配置文件过滤。实际上,如果我没有为我的项目修改Eclipse参数中的任何内容(在 mvn eclipse:eclipse命令之后),那么我的所有配置文件都将保留属性键(即${envi.server.port})而不是他们的价值观。使用这样的配置文件,我的应用程序将无法在Eclipse中运行...

所以我尝试了两种解决方案:

  • 使用m2eclipse插件的完整Maven解决方案。我在项目配置中添加了Maven Builder,然后,每次构建时,都会对文件进行过滤。
  • Ant(仅在Eclipse中使用)。我hardly定义了一个模拟Ant中文件的Maven2过滤的任务。此任务仅专用于过滤,无需编译。

这两个解决方案的常见问题是每次操作都会进行过滤(基本上可以节省Java类版本),然后需要时间。然而,第二种解决方案比第一种解决方案(超过10秒)更快(3秒)。

您如何看待我的方法? 你会怎样以更好的方式做到这一点?

1 个答案:

答案 0 :(得分:2)

如果资源没有经常更改,您可以将Maven构建设置为仅在Clean构建之后运行,然后它不会干扰太多,但这对加速构建没有任何作用。

至于使过滤更快,我不知道任何其他简单的机制会有所帮助,因为你说你需要Ant或Maven来运行过滤,它们都需要一些时间来设置在建造之前,导致减速。

如果这会导致很多问题,您可以编写一个自定义Incremental Eclipse builder来对增量执行过滤。这应该会快得多,但显然需要付出更多的努力。