当前位置: 首页 > 面试题库 >

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

归泽宇
2023-03-14
问题内容

我有一个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内容和资产变得更加容易。

这也有以下好处

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

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

  • 添加后续客户很容易



 类似资料:
  • 问题内容: 如何在Eclipse中创建一个简单的Maven项目。每次创建项目时都会出现错误。 错误说明资源路径位置类型CoreException:无法计算构建计划:插件org.apache.maven.plugins:maven- compiler-plugin:2.3.2或其依赖项之一无法解析:无法读取组织的工件描述符。 apache.maven.plugins:maven- compiler-

  • 问题内容: 有一个以前具有JAR打包类型的Maven项目。现在,该项目已经发展起来,需要将它构建为EAR,包括JAR属性及其依赖项。 这是否一定意味着我必须引入第二种带EAR封装的POM?是否可以从单个Maven项目构建JAR + EAR?其背后的原因是,我真的不希望从根本上重组我的存储库结构。 如果不可能,我想我需要以某种方式重组项目结构以利用Maven模块。在这种情况下,您会建议什么样的(子)

  • 我使用的是Eclipse BuildshipV2.1.2用于Gradle。我有两个独立的web项目,P1和P2,还有一个项目,P3,它作为所有其他项目的依赖项。我的任务是创建一个主构建,用它可以从P1和P2构建和生成WAR文件,并从P3生成JAR文件。我应该包含这个P3 jar文件作为P1和P2的依赖项。我创建了一个, null P2 Build.Gradle settings.gradle Bu

  • 主要内容:创建 Maven 项目,目录结构Maven 提供了大量不同类型的 Archetype 模板,通过它们可以帮助用户快速的创建 Java 项目,其中最简单的模板就是 maven-archetype-quickstart,它只需要用户提供项目最基本的信息,就能生成项目的基本结构及 POM 文件。 创建 Maven 项目 下面我们将通过 maven-archetype-quickstart 原型,在 D:\maven 目录中创建一个基于

  • 问题内容: 我有一个项目,其中有两个使用sqlline的单独模块和另一个依赖jline的库(例如OtherLib)。但是在不同版本上。 Module1使用Sqlline取决于 jline 2.10 Module2使用OtherLib取决于 jline 0.9.94 并且这两个版本不兼容。因此,我设置了类路径,以便Module1首先在 $ HOME / lib / module1 文件夹中搜索,而M