小编典典

为单个Maven项目创建两个工件(战争)

java

我有一个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; }
}

我想避免所有这些,最好的事情可能只是造成两次不同的战争。

有什么好方法吗?我不使用(也不喜欢)依赖注入框架,只为一个类添加一个似乎太过分了,但是我可能会考虑。


阅读 339

收藏
2020-11-30

共1个答案

小编典典

解决此问题的一种方法是使用Maven WAR插件叠加功能。

与其尝试从一个项目构建多个工件(一段时间后可能变得笨拙),不如创建一个基本的WAR项目,然后为每个仅包含需要不同组件的客户创建一个单独的WAR项目。

每个特定于客户的WAR将与基本WAR重叠。这将使自定义ApplicationBuilderFactory以及特定的Web内容和资产变得更加容易。

这也有以下好处

  • 确保客户的特定功能彼此隔离;

  • 不同的客户可以拥有自己的发布周期和源代码控制库

  • 添加后续客户很容易

2020-11-30