vscode新建多模块的maven项目指导意见
此方法适用于任何工具构建maven多模块项目新建一个maven项目A, 直接添加或修改打包结果为pom文件(不能含有任何java代码)
新建一个maven项目B, 放到项目A的pom.xml文件的同一目录下
在项目A的pom.xml文件里面添加如下配置
项目B文件夹名称
4. 在项目B的pom.xml文件里面添加如下配置
项目A的groupId
项目A的artifactId
项目A的版本
最后文件结构类似:项目AA的pom.xml
A的其他文件
项目BB的pom.xml
B的其他文件
随后项目B就继承了项目A的所有依赖环境和默认配置,同时按照此种方式可以添加任意多的类似B项目的子模块.
随后需要解决一个痛点就是子模块和子模块之间如何依赖
假设已经按上述方法配置好了项目ABC,其中A是父pom模块,项目B和项目C都依赖于A
项目B同时还依赖C, 就需要如下操作在项目B的pom.xml文件里面找到dependencies节点
添加一个dependency子节点,里面的内容就是项目C的唯一定位, 比如
项目C的groupId
项目C的artifactId
项目C的版本
此时, 项目B里面就可以使用项目C里面的public类了
推测应该是maven管理了所有的项目后会根据依赖自动管理如何构建的顺序
指导性质的意见讲解完了, 下面说明一下出处
maven官方网站里面有一个如何构建模块的小节(点下面就是)Guide to Working with Multiple Modulesmaven.apache.org
进入以后下面有一个更详细的在线example讲解网站的第6章TheNEXUS | A Community Projectbooks.sonatype.com
第6章是多模块的构建,第7章是企业级多模块构建,也就比第6章多了子模块之间如何相互依赖
假如上面写的过程无法理解, 同时英文官方网站又看不进去, 怎么办?
下面提供一个链接,是那个在线example里面的所有例子的zip压缩包, 直接看源代码吧http://books.sonatype.com/mvnex-book/mvnex-examples.zipbooks.sonatype.com如果想把项目放到不同的文件夹里面,可以学习一下pom.xml中relativePath节点
模块依赖里面等价写法./项目B文件夹名称
和relativePath节点一样可以是相对或绝对路径, 只要能找到pom.xml文件就好pom项目可以继承pom项目
警告:如果父pom文件里面包含spring-boot的依赖,就不要在父pom或工具包里面添加下面的代码
org.springframework.boot
spring-boot-maven-plugin
报错信息如下:
Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.2.6.RELEASE:repackage failed: Unable to find main class
哪里有运行springboot主程序的地方, 哪里才需要springboot插件来生成jar包,其他都使用默认方式生成即可警告:如果在vscode只打开多模块项目里面的一部分会有如下错误
*.java is not on the classpath of project iamparent, only syntax errors are reported
正确做法是将所有模块的文件夹都添加到工作区
2020/06/27更新
后期发现vscode还是无法直接打开多模块的maven项目,还是eclipse或者idea比较好
如果非要拆分项目为多模块,建议使用springcloud微服务