2009-08-06 50 views
5

我有一个应用程序使用几个配置文件(让我们考虑appli.properties这里)。 这些文件包含几个取决于环境的值。我们可以找到一些信息,如:如何在构建Eclipse项目期间过滤资源?

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

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

envi.server.port=4242 

我的构建由Maven2处理。一切工作正常。

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

所以,我想两种解决方案:

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

这两个解决方案的共同问题是过滤是在每一个操作(基本上保存在Java类的版本),然后花费时间。然而第二种解决方案比第一种解决方案(超过10秒)更快(3秒)。

您如何看待我的方法? 你会怎么做,以更好的方式?

+0

我不理解使用Maven过滤属性的问题。 – 2009-08-06 16:08:21

+0

@Mike如果我正确理解这一点,那么Maven构建会在每次更改时运行并需要大约10秒才能完成过滤,这是干扰的。 – 2009-08-06 16:51:51

回答

2

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

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

如果这造成了很多问题,您可以编写一个自定义的Incremental Eclipse builder对增量进行过滤。这应该相当快,但显然要写更多的努力。

相关问题