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

2024-04-27

我有一个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 插件覆盖 https://maven.apache.org/plugins/maven-war-plugin/overlays.html#特征。

您不必尝试从一个项目构建多个工件(这在一段时间后可能会变得难以处理),而是创建一个基本 WAR 项目,然后为每个客户创建一个单独的 WAR 项目,该项目仅包含需要不同的组件。

每个客户特定的 WAR 将被基础 WAR 覆盖。这不仅可以更轻松地自定义 ApplicationBuilderFactory,还可以更轻松地自定义特定的 Web 内容和资产。

这还有以下好处

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

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

  • 添加后续客户很容易

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为单个 Maven 项目创建两个工件(war) 的相关文章

随机推荐