项目使用的工具:
- IntelliJ IDEA
- JDK 1.8
- apache-maven-3.3.9
项目的目录:
- 主项目 springboot-multi
- 子模块 entity、dao、service、web
一、使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi
二、删除项目中的src目录,把pom.xml中的项目打包方式改为pom,如下:
?
1 2 3 4 5 | < groupId >com.example</ groupId > < artifactId >springboot-multi</ artifactId > < version >0.0.1-SNAPSHOT</ version > <!-- 此处改为pom --> < packaging >pom</ packaging > |
三、创建springboot-multi项目的子模块,在项目上右键单击,选择:new -> Module。
四、创建四个子模块后,删除子模块中 src/main/java、src/main/java下的所有文件(如果没有文件跳过此操作),只保留web子模块的SpringBoot的Application主启动类。
五、主项目pom.xml (注意<modules>标签是否指定了子模块)
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | < modelVersion >4.0.0</ modelVersion > < groupId >com.example</ groupId > < artifactId >springboot-multi</ artifactId > < version >0.0.1-SNAPSHOT</ version > <!-- 此处改为pom --> < packaging >pom</ packaging > < name >springboot-multi</ name > < description >Demo project for Spring Boot</ description > < modules > < module >web</ module > < module >service</ module > < module >dao</ module > < module >entity</ module > </ modules > < parent > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-parent</ artifactId > < version >1.5.10.RELEASE</ version > < relativePath /> <!-- lookup parent from repository --> </ parent > < properties > < project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding > < project.reporting.outputEncoding >UTF-8</ project.reporting.outputEncoding > < java.version >1.8</ java.version > </ properties > < dependencies > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-web</ artifactId > </ dependency > </ dependencies > <!--指定使用maven打包--> < build > < plugins > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-compiler-plugin</ artifactId > < version >3.1</ version > < configuration > < source >${java.version}</ source > < target >${java.version}</ target > </ configuration > </ plugin > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-surefire-plugin</ artifactId > < version >2.19.1</ version > < configuration > < skipTests >true</ skipTests > <!--默认关掉单元测试 --> </ configuration > </ plugin > </ plugins > </ build > |
六、web子模块pom.xml(依赖service、dao、entity子模块)
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | < modelVersion >4.0.0</ modelVersion > < groupId >com.example</ groupId > < artifactId >web</ artifactId > < version >0.0.1-SNAPSHOT</ version > < packaging >jar</ packaging > < name >web</ name > < description >Demo project for Spring Boot</ description > < parent > < groupId >com.example</ groupId > < artifactId >springboot-multi</ artifactId > < version >0.0.1-SNAPSHOT</ version > < relativePath >../pom.xml</ relativePath > </ parent > < dependencies > < dependency > < groupId >com.example</ groupId > < artifactId >service</ artifactId > < version >0.0.1-SNAPSHOT</ version > </ dependency > < dependency > < groupId >com.example</ groupId > < artifactId >dao</ artifactId > < version >0.0.1-SNAPSHOT</ version > </ dependency > < dependency > < groupId >com.example</ groupId > < artifactId >entity</ artifactId > < version >0.0.1-SNAPSHOT</ version > </ dependency > </ dependencies > <!--spring boot打包的话需要指定一个唯一的入门--> < build > < plugins > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > < configuration > <!-- 指定该Main Class为全局的唯一入口 --> < mainClass >com.example.WebApplication</ mainClass > < layout >ZIP</ layout > </ configuration > < executions > < execution > < goals > < goal >repackage</ goal > <!--可以把依赖的包都打包到生成的Jar包中--> </ goals > </ execution > </ executions > </ plugin > </ plugins > </ build > |
七、service子模块pom.xml(依赖 dao 、entity子模块)
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | < modelVersion >4.0.0</ modelVersion > < groupId >com.example</ groupId > < artifactId >service</ artifactId > < version >0.0.1-SNAPSHOT</ version > < packaging >jar</ packaging > < name >service</ name > < description >Demo project for Spring Boot</ description > < parent > < groupId >com.example</ groupId > < artifactId >springboot-multi</ artifactId > < version >0.0.1-SNAPSHOT</ version > < relativePath >../pom.xml</ relativePath > </ parent > < dependencies > < dependency > < groupId >com.example</ groupId > < artifactId >dao</ artifactId > < version >0.0.1-SNAPSHOT</ version > </ dependency > < dependency > < groupId >com.example</ groupId > < artifactId >entity</ artifactId > < version >0.0.1-SNAPSHOT</ version > </ dependency > </ dependencies > |
八、dao子模块pom.xml (依赖entity子模块)
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | < modelVersion >4.0.0</ modelVersion > < groupId >com.example</ groupId > < artifactId >dao</ artifactId > < version >0.0.1-SNAPSHOT</ version > < packaging >jar</ packaging > < name >dao</ name > < description >Demo project for Spring Boot</ description > < parent > < groupId >com.example</ groupId > < artifactId >springboot-multi</ artifactId > < version >0.0.1-SNAPSHOT</ version > < relativePath >../pom.xml</ relativePath > </ parent > < dependencies > < dependency > < groupId >com.example</ groupId > < artifactId >entity</ artifactId > < version >0.0.1-SNAPSHOT</ version > </ dependency > </ dependencies > |
九、entity子模块
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | < modelVersion >4.0.0</ modelVersion > < groupId >com.example</ groupId > < artifactId >entity</ artifactId > < version >0.0.1-SNAPSHOT</ version > < packaging >jar</ packaging > < name >entity</ name > < description >Demo project for Spring Boot</ description > < parent > < groupId >com.example</ groupId > < artifactId >springboot-multi</ artifactId > < version >0.0.1-SNAPSHOT</ version > < relativePath >../pom.xml</ relativePath > </ parent > |
十、pom.xml文件中需要注意的就是:
- 主项目的modules标签指定的子模块是否正确
- 子模块之间的依赖
- 子模块的parent标签
十一、web子模块的Application启动类:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 | @RestController @SpringBootApplication public class WebApplication { public static void main(String[] args) { SpringApplication.run(WebApplication. class , args); } @RequestMapping (value = "/test" ,method = RequestMethod.GET) public String test(){ return "test success" ; } } |
十二、执行main方法启动项目,访问localhost:8080/test,出现如下页面表示项目搭建成功:
十三、项目打包命令: mvn clean package 或者 使用右边工具栏的图形化界面打包也可以:
十四、打包成功日志: