我有一个带子模块的顶级maven项目。第一个子模块是一个Java项目,它从编译器的注释处理器生成一些JavaScript库代码。我想将这些生成的JS文件包含到第二个子模块中,这是一个webpack NPM托管项目,用于构建,然后在打包到fat-jar之前将webpack BACK发布到第一个子模块中。有谁知道如何实现这个目标?
答案 0 :(得分:1)
您描述的是循环依赖。你必须打破这种循环依赖。 (您可能一直在代码中执行类似的操作。)
我通过分解Java项目解决了同样的问题。一旦你这样做,你就会意识到,事实上,你的第一个项目是服务于两个独立的角色,然后分开:
自:
要:
我经常看到这种情况发生在构建成WAR文件的多模块项目中,并且我采用了经验法则,即WAR项目不应该有任何Java(生产)代码,承认它的作用是聚合器/汇编
有些人会认为这第三个项目是无聊的,有些人总是认为你很容易得到太多的Maven模块。我认为这通常源于工具或构建管道限制,一旦你突破这些限制,你可以拥抱越来越多的Maven模块,因为边界选择得很好,我认为这里没有问题。
但是,有一点犹豫:为什么JavaScript项目会分开?如果它没有单独部署(显然它不是因为你正在组装“fat-jar”),JavaScript代码遵循“fat-jar”的交付生命周期,这将受益于在同一来源存储库,为什么甚至将它作为一个单独的Maven模块? (如果它们位于不同的源代码库中,那么模块之间的版本管理会有成本,我不确定你是否有理由。)拥有一块巨石并没有羞耻(如果做得好 - 它会发生,微服务让你相信否则,但在那个世界,你可能会分开部署JavaScript代码。)