一、创建父工程boot-parent
创建一个SpringBoot父项目,只保留pom.xml,并导入工程中用到的所有依赖
<dependencies>
<!-- Spring&SpringMVC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
<!-- mysql-connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
</dependencies>
二、创建子工程
2.1、创建控制器子工程gaofeng-admin
创建一个admin子模块,用于添加配置文件、实现Controller层的作用
2.1.1、application.yml
在配置文件中管理整个工程的配置项
server:
port: 8070
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.01:3306/t_mybatis?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: Aa123123.
mybatis-plus:
type-aliases-package: demo.entity
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
table-prefix: t_
id-type: auto
mapper-locations: classpath:mappers/*.xml
2.2、创建系统子工程gaofeng-system
创建一个system子工程,用于实现实体层、DAO层、Service层的开发
2.2.1、实体层User
package demo.entity;
import lombok.Data;
@Data
public class User {
private String userName;
private String passwd;
}
2.2.2、DAO层UserMapper
package demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import demo.entity.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
}
2.2.3、Service层UserService
package demo.service;
import demo.entity.User;
import java.util.List;
public interface UserService {
List<User> findAll();
}
package demo.service.imp;
import demo.entity.User;
import demo.mapper.UserMapper;
import demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.selectList(null);
}
}
2.3、在控制器子工程中添加系统子工程的依赖
由于控制器子工程实现的是Controller层的功能,需要依赖系统子工程的Service层功能,所以需要在控制器子工程中通过dependency
标签添加系统子工程的依赖
2.3.1、添加依赖
gaofeng-admin/pom.xml
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>gaofeng-system</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
2.3.2、完成Controller层的功能
package demo.controller;
import demo.entity.User;
import demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public List<User> findAll(){
return userService.findAll();
}
}
三、编译打包
第1步:删除父工程pom文件的buid元素
第2步:在子工程pom文件添加buid元素
由于整个工程中只有一个启动类,当前项目的设计将启动类放到了gaofeng-admin子工程中,所以只需要在gaofeng-admin子工程共添加打包信息即可,主要是设置启动类的路径
gaofeng-admin\pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>
<!--启动类全限定名-->
demo.Demo
</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
第3步:清除项目中所有的编译文件
在父工程中使用mavnen => Lifecycle => clean命令清除所有项目(父工程及子工程)中所有的编译文件(target文件夹及里面的全部内容)
第4步:编译工程
在父工程中使用mavnen => Lifecycle => install命令编译所有工程(父工程及子工程),即生成所有子工程的target文件夹及里面的全部内容
第5步:打可运行的jar包
由于整个工程中只有一个启动类,当前项目的设计将启动类放到了gaofeng-admin子工程中,所以只需要打包gaofeng-admin子工程即可
在gaofeng-admin子工程中使用mavnen => Lifecycle => package命令打包
打包成功后,在子工程gaofeng-admin\target文件夹中可以看到已经打包好的jar文件
在命令窗口(cmd)使用命令可以运行该jar文件
命令:
cd /d D:\workspace\idea\boot-parent\gaofeng-admin\target
java -jar gaofeng-admin-0.0.1-SNAPSHOT.jar
运行效果:
三、附录
4.1、项目源代码
4.2、父工程完整pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<modules>
<module>gaofeng-admin</module>
<module>gaofeng-system</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>boot-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boot-parent</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
<!-- mysql-connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.3、子工程gaofeng-admin完整pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>boot-parent</artifactId>
<groupId>com.example</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>gaofeng-admin</artifactId>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>gaofeng-system</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>
demo.Demo
</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>