在Eclipse中发布应用程序时替换属性文件的内容

时间:2014-03-31 08:59:09

标签: java eclipse maven properties weblogic12c

我们有一个带有几个依赖的.jar项目的.ear项目,我们正在使用Maven。每个项目都有自己的属性文件,但里面的属性没有特定的值,而是占位符,例如

database.url=${database.url}

使用资源插件在Maven构建过程中替换占位符$ {database.url}。因此,对于每个阶段(本地,测试,集成,生产),我们都有一个不同的Maven配置文件定义过滤器,因此如果我们为测试阶段构建,我们会得到类似

的内容
database.url=url.for.test.db

应用程序在WLS 12上运行,我们希望使用Eclipse服务器插件(我们使用Eclipse Kepler)在本地WLS上部署它。但是,当我们在Eclipse中将应用程序添加到服务器并发布时,由于属性文件中的占位符未被特定值替换,因此它无法正常工作。

AFAIK,正在部署的内容位于Eclipse工作区:

<workspace>\.metadata\.plugins\org.eclipse.core.resources\.projects\<ear-project-name>\beadep\<WLS domain name>\<ear-project-name>

当然我们可以更改该位置的属性文件,但每当我们在Eclipse中发布时,这些更改都会被覆盖,我们会再次获取原始属性文件

database.url=${database.url}

在部署到WLS时没用。

在从Eclipse部署到WLS之前是否有任何机制或可能更改属性文件?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,这是我选择解决这个问题的解决方案(我不确定它是否是最好的解决方案,但至少它是有效的):

我在名为“properties-local”的.ear项目中添加了一个新文件夹。此文件夹仅包含与本地部署(无占位符)相关的属性文件,例如

  

database.url = url.for.local.db

Wihtin Eclipse项目的属性,有一个“部署程序集”部分。我将新文件夹“properties-local”添加到部署路径APP-INF / classes中,因此这是它们出现在.ear中用于本地部署的地方。

maven-ear-plugin负责为远程阶段构建.ear文件,它不知道目录属性local。

因此解决方案的缺点是,现在有两个包含属性文件的文件夹:一个用于本地Eclipse部署,一个用于部署在远程服务器上的.ear文件。