【问题标题】:Multimodule Maven Project with interdependencies?具有相互依赖关系的多模块 Maven 项目?
【发布时间】:2018-01-09 01:29:21
【问题描述】:

我有一个带有子模块的顶级 maven 项目。第一个子模块是一个 Java 项目,它从编译器的注释处理器生成一些 JavaScript 库代码。我想将这些生成的 JS 文件包含到第二个子模块中,一个 webpack NPM 托管项目,用于构建,然后将 webpack BACK 发布到第一个子模块中,然后再打包到 fat-jar 中。有谁知道实现这一点的方法吗?

【问题讨论】:

    标签: maven multi-module maven-reactor


    【解决方案1】:

    您描述的是循环依赖。你必须打破这种循环依赖。 (你可能一直在代码中做类似的事情。)

    我通过拆分 Java 项目解决了同样的问题。一旦你这样做了,你就会认识到,事实上,你的第一个项目是服务于两个不同的角色,然后它们就分开了:

    发件人:

    1. 带有代码和程序集的 Java 项目
    2. JavaScript 项目

    收件人:

    1. 带有代码的 Java 项目
    2. JavaScript 项目
    3. 带有程序集的 JAR 打包项目

    我经常在构建到 WAR 文件中的多模块项目中看到这种情况,并且我采用了 WAR 项目不应包含任何 Java(生产)代码的经验法则,并承认其角色是聚合器/汇编器。

    有些人会认为这第三个项目是轻浮的,有些人总是认为你很容易获得太多的 Maven 模块。我认为这通常源于工具或构建管道的限制,一旦你突破了这些限制,你可以拥抱越来越多的 Maven 模块,因为边界选择得很好,我认为这里没有问题。

    但有一点犹豫:为什么 JavaScript 项目一开始是分开的?如果它没有单独部署(显然不是因为您正在组装“fat-jar”),JavaScript 代码将遵循“fat-jar”的交付生命周期,这将受益于同一源存储库,那么为什么还要让它成为一个单独的 Maven 模块呢? (如果它们位于单独的源存储库中,那么模块之间的版本管理会产生成本,我不确定你是否有理由这样做。)拥有一个单体应用并不可耻(如果做得好——它发生了,微服务会让你不相信,但在那个世界里,你可能会单独部署 JavaScript 代码)。

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2011-07-07
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多