我正在研究这个包含多个组件的大型 java maven 项目。该项目将以完全相同的方式交付给多个客户,除了 1 个客户的 1 个小部分。
该客户端为我提供了一个 jar 文件,我应该在记录信息时使用该文件。
现在这是我的问题 - 我如何创建两个战争文件 - 1 个带有客户提供给我的 jar 文件,1 个没有。
我开始研究功能切换 - 但功能切换需要我将专有 jar 文件交付给其他客户,因为代码无法编译,因为仍然存在依赖关系,我只有 1 个 war 文件。
查看使用 maven 配置文件来编译和打包项目工件的不同依赖项。
这是一个与此类似的问题。
我不太明白您遇到的问题:如果您的应用程序代码需要“特殊日志记录”才能工作,那么简单地将其拉出是行不通的,正如您所说,您的代码将需要“特殊日志记录”库才能运行.
您是否采取了一些措施来抽象出“特殊日志记录”的使用,以便为其他客户提供替代方案?
正确安排项目的一种方法是将两个 WAR 作为不同的项目,并在其中定义不同的依赖项,使其看起来像:
+ foo
+ foo-main // project contains main shared code
+ foo-war-special-log // war project that have dependencies to special logging
+ foo-war-normal-log // war project that depends on alternative logging
还有其他方法,例如,您还可以使用程序集插件或 war 插件来控制战争中包含的依赖关系,并在同一个项目中构建两个战争,并提供不同的分类器来区分它们。但是我认为拥有单独的项目更容易处理。
谢谢你们上面提供的回复。虽然,您提供了 2 个很好的解决方案,但它们不适用于我想要做的事情。
我的一位同事通过使用 maven 覆盖帮助我解决了这个问题。
基本要点是我有一个名为 foo 的项目。我将那个确切的项目复制并粘贴到它旁边,并将其命名为 foo_with_logging。在我的新项目的 pom 文件中,我依赖于项目 foo。
请让我知道,如果你有任何问题。