gpt4 book ai didi

maven-2 - Maven : Combine web projects

转载 作者:行者123 更新时间:2023-12-04 18:53:51 26 4
gpt4 key购买 nike

我设置了以下 Maven 项目:

  • PM-核心
  • PM-Web(依赖于 PM-Core)

  • 现在,这个项目用于多个客户端,但每个客户端都有一些小的差异:主要是配置文件的差异,但有些客户端还需要额外的 java 文件(可能没有为其他客户端安装)。

    我一直在考虑如何使用 maven 支持这一点的几种替代方案,但我仍在寻找完美的解决方案。

    我能想到的最佳解决方案是为每个客户端(例如 PM-CLIENT1,...)创建一个单独的 maven 项目,其中仅包含客户端特定的配置文件和附加的 java 文件或 jsp,...。下一步是将 PM-Web 项目和客户端项目视为一个 Web 项目,这意味着:将它们组合(打包)为 1 个 war 文件,其中来自客户端项目的文件优先于来自 PM-Web 项目的文件。

    更具体:运行 mvn package在 PM-Client1 上,将从 PM-Web 中获取所有内容,添加/替换 PM-Client1 中的文件,然后将其打包成一个单一的 war 。

    所以问题是:如何用 maven 实现这一点?

    最佳答案

    是的,这可以使用 Overlays 来完成.网页上的示例正是您所说的。

    对于项目结构,你可以有这样的东西:

    .
    |-- PM-核心
    |-- PM-WebCommon (war 类型,取决于核心)
    |-- PM-Client1 (war 类型,依赖 webcommon)
    `-- PM-Client2 (war 类型,取决于 webcommon)

    并在 PM-Client1 和 PM-Client2 中使用覆盖将它们与 PM-WebCommon 和包 war “合并”到每个客户端。

    更新 我不会涵盖所有细节,但我认为声明 war 依赖的范围为 runtime使用叠加层时需要,这就是叠加层的工作方式(实际上,整个叠加层是一种 hack)。现在,要解决您的 Eclipse 问题,一种解决方案是创建一个包含 PM-WebCommon 项目的类的 JAR。为此,请使用 attachClasses 可选参数并将其设置为true .这将告诉 maven 创建一个 PM-WebCommon-<version>-classes.jar然后您就可以在 PM-Client1 中声明为依赖项(具有 provided 范围)。详情请看MWAR-73MWAR-131 .这也在 FAQ 中进行了讨论。 war 插件。请注意,这不是推荐的做法,正确的方法是将类移动到单独的模块(这是我想提到的另一个解决方案)。

    更新 (201001018): 我试过 attachClasses 参数,它适用于插件的 2.1-beta-1 版本。

    关于maven-2 - Maven : Combine web projects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063930/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com