Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有相互依赖性的多模块Maven项目?_Maven_Multi Module_Maven Reactor - Fatal编程技术网

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

具有相互依赖性的多模块Maven项目?,maven,multi-module,maven-reactor,Maven,Multi Module,Maven Reactor,我有一个带有子模块的顶级maven项目。第一个子模块是一个Java项目,它从编译器的注释处理器生成一些JavaScript库代码。我想将生成的JS文件包含到第二个子模块中,这是一个webpack NPM管理的项目,用于构建,然后在打包到胖jar之前将webpack发布回第一个子模块。有人知道实现这一点的方法吗?您描述的是循环依赖。你必须打破这种循环依赖。(您可能一直在代码中执行类似的操作。) 我通过分解Java项目解决了同样的问题。一旦你这样做了,你就会认识到,事实上,你的第一个项目是服务于两个

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

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

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

发件人:

  • 带有代码和程序集的Java项目
  • JavaScript项目
  • 致:

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

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

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