原因:
很多同学在搭建maven 多模块项目过程中经常会遇到 jar包冲突、子类引入不进jar包,归其原因是分不清楚dependencies与 dependencyManagement的区别。
目录
一、 DepencyManagement & dependencies区别
一、 DepencyManagement & dependencies区别
1、 dependencies: 即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
2、 dependencyManagement:里面只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version 和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
二、 工程目录结构
service-服务层
web-控制层
三、 搭建步骤
1、 创建父类工程
- 选择Spring Initializr,Initializr默认选择Default,点击Next

- 填写坐标

- 不需要选择Developer Tools,点击Finish

- 删除无用的.mvn目录、src目录、mvnw及mvnw.cmd文件,最终只留.gitignore和pom.xml

2、 创建子类工程(Service与web)
- 选择项目根目录右键呼出菜单,选择New -> Module

- 选择Maven,点击Next

- 填写相关信息,点击Next
3、 整理父 pom 文件
- 删除dependencies标签及其中的依赖,因为Spring Boot提供的父工程已包含,并且父pom原则上都是通过dependencyManagement标签管理依赖包。
- 删除build标签及其中的所有内容,spring-boot-maven-plugin插件作用是打一个可运行的包,多模块项目仅仅需要在入口类 所在的模块添加打包插件,这里父模块不需要打包运行。而且该插件已被包含在 Spring Boot提供的父工程中,这里删掉即可。
4、 测试
- web pom加入必须的依赖包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>- 在web层创建com.web包,并添加入口类WebApplication.java
package com.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @ClassName: SpringBootWebApplication
* TODO:类文件简单描述
* @Version: 0.0.1
*/
@SpringBootApplication
public class SpringBootWebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootWebApplication.class,args);
}
}
- 在com.web包中添加controller目录并新建一个Testcontroller,添加hello方法测试接口是否可以正常访问
package com.web.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName: Testcontroller
* TODO:类文件简单描述
* @Version: 0.0.1
*/
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping("/hello")
public String hello(){
return "Hello World";
}
}- 运行WebApplication类中的main方法启动项目,默认端口为8080,访问http://localhost:8080/test/hello

版权声明:本文为wo9aiwuchunmin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。