说明
大多数时候,一个大的mvn工程下有多个独立的小工程,每次修改代码需要单独的打开这些独立的小工程,编码很不方便。于是新建一个顶级目录将全部的独立工程放入,无赖IntelliJ打开顶级项目,下面的工程识别不了,每个java文件上有个红色的J,何其绝望,经过直接的踩坑,总结此贴。看一张图
1. 新建空的mvn工程,作为顶级项目名
2. 将独立的mvn项目,拷贝到此目录下
3. file-->project structure-->modules-->点+新建-->选new module-->点mvn,选择你的module sdk-->选好上级parents(点开选择创建的空工程的module),填上项目arifactId,下一步,确定(如图)
添加好后,顶级工程的pom会有,<modules></modules>标签,在开发中发现有的module不能自动生成,此时需手动添加,最终类似下图
4.此后,所有的独立项目都能正常查看,正常编译执行
如果你的这个顶级项目联合 git去管理,请继续往下看。如果不是,可以去享受你的开发了
当你把上传代码到git远程后,在另一个地方 clone下代码,继续开发,此时你会发现,所有的子目录里的java文件还是显示红色j,查看module只有顶级module。我猜测是由于有的配置文件push会被忽略,子项目的module不在了,问题图如下
此时,重新导入一下module就行了
file-->project structure-->modules-->点+新建-->import module-->将路径指向子项目即可
编译
怎么编译成jar包,在shell中执行 mvn clean package,会在module下的target下产生jar文件,或者在IDEA中建立Artifacts,使用IDEA的build->build artifats功能
展望:
个人感觉,可以在 第一部分创建 子module后,手动修改子项目的 pom文件,加上parents module依赖,可能不会出现后部分git clone下来还要手动导入子module的问题(未测)
<parent>
<!--注意relativePath路径,我的module是在总工程下二级目录下-->
<relativePath>../../pom.xml</relativePath>
<artifactId>hadoop-cost-analysis</artifactId>
<groupId>com.sogou</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
参考文献
https://blog.csdn.net/liuhe2296044/article/details/78957858
https://blog.csdn.net/jielinku29/article/details/79678467