具有相互依赖性的多模块Maven项目?

时间:2017-08-02 02:11:50

标签: maven multi-module maven-reactor

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

1 个答案:

答案 0 :(得分:1)

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

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

自:

  1. 包含代码和程序集的Java项目
  2. JavaScript项目
  3. 要:

    1. 带代码的Java项目
    2. JavaScript项目
    3. 带有程序集的JAR打包项目
    4. 我经常看到这种情况发生在构建成WAR文件的多模块项目中,并且我采用了经验法则,即WAR项目不应该有任何Java(生产)代码,承认它的作用是聚合器/汇编

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

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