0

我正在研究这个包含多个组件的大型 java maven 项目。该项目将以完全相同的方式交付给多个客户,除了 1 个客户的 1 个小部分。

该客户端为我提供了一个 jar 文件,我应该在记录信息时使用该文件。

现在这是我的问题 - 我如何创建两个战争文件 - 1 个带有客户提供给我的 jar 文件,1 个没有。

我开始研究功能切换 - 但功能切换需要我将专有 jar 文件交付给其他客户,因为代码无法编译,因为仍然存在依赖关系,我只有 1 个 war 文件。

4

3 回答 3

1

查看使用 maven 配置文件来编译和打包项目工件的不同依赖项。

这是一个与此类似的问题

于 2013-10-01T22:04:07.747 回答
1

我不太明白您遇到的问题:如果您的应用程序代码需要“特殊日志记录”才能工作,那么简单地将其拉出是行不通的,正如您所说,您的代码将需要“特殊日志记录”库才能运行.

您是否采取了一些措施来抽象出“特殊日志记录”的使用,以便为其他客户提供替代方案?

正确安排项目的一种方法是将两个 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 插件来控制战争中包含的依赖关系,并在同一个项目中构建两个战争,并提供不同的分类器来区分它们。但是我认为拥有单独的项目更容易处理。

于 2013-10-02T04:15:38.150 回答
0

谢谢你们上面提供的回复。虽然,您提供了 2 个很好的解决方案,但它们不适用于我想要做的事情。

我的一位同事通过使用 maven 覆盖帮助我解决了这个问题。

基本要点是我有一个名为 foo 的项目。我将那个确切的项目复制并粘贴到它旁边,并将其命名为 foo_with_logging。在我的新项目的 pom 文件中,我依赖于项目 foo。

请让我知道,如果你有任何问题。

于 2013-10-04T15:58:09.047 回答