我有一个大型存储库,其中包含一个Maven项目,该项目被划分为许多模块和子模块。
类似于:
root
-area1
--A
---api
---impl
--B
---api
---impl
--C
---api
---impl
-area2
--X
---api
---impl
--Y
---api
---impl
--Z
---api
---impl
当然,这是简化的。area1、area2及其子模块被定义为pom类型的Maven项目,其中api和impl被定义为jaras。
我正在尝试向名为subset
(与area1、area2和area3相同的级别)的根添加一个新的Maven模块,该模块只引用现有模块的一部分,因此我只能将该子集模块加载到IntelliJ中,以节省系统资源,并配置用于子集项目的附加工具。
最终目标是创建多个这样的子集项目,它们在同一个存储库(Monorepo)中使用相同的基本/共享模块。
我将子集项目pom定义为如下所示:
<parent>
<groupId>root.group</groupId>
<artifactId>root.artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>subset.group</groupId>
<artifactId>subset.artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>../area1/A</module>
<module>../area1/B</module>
<module>../area2/Z</module>
</modules>
<properties>
<root-basedir>${basedir}/..</root-basedir>
</properties>
问题是,当我将子集Maven项目导入空的IntelliJ (2020.3.4)时,Maven工作得很好(所有的依赖项和模块结构都在那里),但是当我看到Project
结构时:
subset
area1
-api
-api
-impl
-impl
area2
-api
-impl
Project Files
视图,我看到了预期结构中的文件:)。
subset
area1
-A
--api
--impl
-B
--api
--impl
area2
-Z
--api
--impl
如果我查看Project Structure
(File->Project ),我可以看到模块导入得很好,这似乎完全是一个显示问题。
对于如何使Project
和Project Files
反映相同的结构,有什么想法吗?(沿途不缺少pom分组模块A、B和Z)
发布于 2022-01-07 23:34:13
所有这些的原因是我的pom文件中的工件in。
看起来,IntelliJ试图将父工件id与模块工件id匹配起来,并将它们组合在一起。当发生这种情况时,IntelliJ复制(仅在项目窗格中直观地)在实际模块旁边的所有子模块(只要它们都在工件id中有前缀父模块)--这是递归发生的,这可能非常烦人,并且在运行深模块树的大型项目中显得非常混乱。
解决方案可能不是使用像ParentID.ModuleID.SubmoduleID这样的工件id,而是只对子模块使用SubmoduleID,对模块使用ModuleID,对父模块使用ParentID (意味着在ID中不点缀)。
https://stackoverflow.com/questions/70297476
复制相似问题