我们有一个带有几个依赖的.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之前是否有任何机制或可能更改属性文件?
感谢您的帮助。
答案 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文件。