我有一个Java Web项目,我们部署在两个不同客户的服务器上,其中99%的代码是相同的,现在我有两个ApplicationBuilder,该类包含为每个客户定制的类。
每当我要部署新版本时,我都必须手动注释一行,使用maven进行构建,取消注释该行,注释另一行,然后再次构建。
public class ApplicationBuilderFactory { private static final IApplicationBuilder app; static { // app = new Customer1ApplicationBuilder() app = new Customer2ApplicationBuilder(); } } public static IApplicationBuilder get() { return app; } }
我想避免所有这些,最好的事情可能只是造成两次不同的战争。
有什么好方法吗?我不使用(也不喜欢)依赖注入框架,只为一个类添加一个似乎太过分了,但是我可能会考虑。
解决此问题的一种方法是使用Maven WAR插件叠加功能。
与其尝试从一个项目构建多个工件(一段时间后可能变得笨拙),不如创建一个基本的WAR项目,然后为每个仅包含需要不同组件的客户创建一个单独的WAR项目。
每个特定于客户的WAR将与基本WAR重叠。这将使自定义ApplicationBuilderFactory以及特定的Web内容和资产变得更加容易。
这也有以下好处
确保客户的特定功能彼此隔离;
不同的客户可以拥有自己的发布周期和源代码控制库
添加后续客户很容易