springboot实现maven多模块和打包部署

网友投稿 315 2022-08-15


springboot实现maven多模块和打包部署

目录创建多模块项目依赖关系

开发工具 :idea

工程结构:

父工程father

子模块 dao (用于持久化数据跟数据库交互)

子模块 entity (实体类)

子模块 service (处理业务逻辑)

子模块 web (页面交互接收、传递数据,唯一有启动类的模块)

关系: web依赖 service、dao、entity

service依赖 dao、entity

dao依赖 entity

entity谁都不依赖,独立的

创建多模块项目

new ------file-------project

联网状态下 选择 default 直接下一步

项目结构如下

接下来,把src整个删掉,父工程不需要,因为父工程你就当它只有一个外壳就完了

接下来创建子模块 工程上右键 → new → Module 选择Spring Initaializr 下一步

重复上面操作 创建service 现在创建好了 entity 和 servicedao模块和web模块可以根据实际需求选择引入mysql,mybatis,web这些

删除每个子模块中没用的文件,.mvn、.gitignore、daoiml、mvnw、mvnw.cmd文件只留下pom.xml

删除除了web模块以外其它模块中的Applicatin启动项,和resources目录下的application.properties配置文件

以上动作操作完成以后如果你发现你的子模块变成了文件夹,没关系,找到Maven Projects刷新一下就好了

最终的项目结果如下

依赖关系

打开父pom.xml修改打包方式jar为pom,注意:build内容也需要做替换,因为默认的spring-boot-maven-plugin这种方式,等到后期打包的时候他会一直提示你,你引入的依赖不存在!代码如下

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

father

0.0.1-SNAPSHOT

pom

father

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.apache.maven.plugins

maven-compiler-plugin

3.1

${java.version}

${java.version}

org.apache.maven.plugins

maven-surefire-plugin

2.19.1

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

father

0.0.1-SNAPSHOT

pom

father

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.apache.maven.plugins

maven-compiler-plugin

3.1

${java.version}

${java.version}

org.apache.maven.plugins

maven-surefire-plugin

2.19.1

这里有个坑需要注意,dao、service、entity这三个模块的pom.xml文件中不需要build 内容,直接干掉

entity 的 pom.xml 内容

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

entity

0.0.1-SNAPSHOT

entity

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

entity

0.0.1-SNAPSHOT

entity

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

dao 的 pom.xml 内容

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

dao

0.0.1-SNAPSHOT

dao

Demo project for Spring Boot

1.8

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.0

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

com.mr

entity

0.0.1-SNAPSHOT

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

dao

0.0.1-SNAPSHOT

dao

Demo project for Spring Boot

1.8

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.0

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

com.mr

entity

0.0.1-SNAPSHOT

service 模块的 pom.xml 内容

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

service

0.0.1-SNAPSHOT

service

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

com.mr

dao

0.0.1-SNAPSHOT

com.mr

entity

0.0.1-SNAPSHOT

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

service

0.0.1-SNAPSHOT

service

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

com.mr

dao

0.0.1-SNAPSHOT

com.mr

entity

0.0.1-SNAPSHOT

web模块的 pom.xml 内容

注意build部分,因为web模http://块作为程序的入口启动,所以它需要打包,并且要指定Main Class

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

web

0.0.1-SNAPSHOT

web

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.0

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

com.mr

dao

0.0.1-SNAPSHOT

com.mr

entity

0.0.1-SNAPSHOT

com.mr

service

0.0.1-SNAPSHOT

org.springframework.boot

spring-boot-maven-plugin

com.mr.WebApplication

ZIP

repackage

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

com.mr

web

0.0.1-SNAPSHOT

web

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.0

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

com.mr

dao

0.0.1-SNAPSHOT

com.mr

entity

0.0.1-SNAPSHOT

com.mr

service

0.0.1-SNAPSHOT

org.springframework.boot

spring-boot-maven-plugin

com.mr.WebApplication

ZIP

repackage

到此为止所有的依赖全部完成!接下来就是测试!做了一个简单的查询在web的项目里application.properties配置文件里 添加以下配置

# mybatis 配置

#使用mybatis配置文件,需要指定该文件的文件路径

#指定mapper.xml文件的路径,如果mapper.xml与接口在一起则不需要该配置

mybatis.mapper-locations=classpath:mapper/*Mapper.xml

#扫描pojo包中的实体类并起别名

mybatis.type-aliases-package=com.mr

#日志级别改为debug可以显示sql语句,logging.level后为存放mapper接口的包

logging.level.com.mr.mapper=debug

# 开启驼峰命名法 mybatis.configuration.map-underscore-to-camel-case: true

mybatis.configuration.map-underscore-to-camel-case=true

#配置数据源

#德鲁伊 连接池

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.username=ws

spring.datasource.password=1

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 必须加?号后内容 北京时间东八区

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/redis?serverTimezone=GMT%2B8

在web项目里 pom.xml 中添加以下坐标

com.alibaba

druid-spring-boot-starter

1.1.10

org.springframework.boot

spring-boot-starter-freemarker

entity 模块里 在com.mr包下 创建实体类

public class User {

private Integer userId;

private String userName;

private String userPass;

@DateTimeFormat(pattern ="yyyy-MM-dd HH-mm-ss")

private Date userDate;

public Integer getUserId() {

return userId;

}

public void setUserId(Integer userId) {

this.userId = userId;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getUserPass() {

return userPass;

}

public void setUserPass(String userPass) {

this.userPass = userPass;

}

public Date getUserDate() {

return userDate;

}

public void setUserDate(Date userDate) {

this.userDate = userDate;

}

@Override

public String toString() {

return "User{" +

"userId=" + userId +

", userName='" + userName + '\'' +

", userPass='" + userPass + '\'' +

", userDate=" + userDate +

'}';

}

public User() {

super();

}

@Override

public int hashCode() {

return super.hashCode();

}

@Override

public boolean equals(Object obj) {

return super.equals(obj);

}

@Override

protected Object clone() throws CloneNotSupportedException {

return super.clone();

}

@Override

protected void finalize() throws Throwable {

super.finalize();

}

}

在dao模块下 com.mr 包下 创建接口

@Mapper //保证被扫描到

public interface UserDao {

List queryUser();

}

然后创建 mapper.xml 文件 与web.xml 配置文件路径一致 按下图操作

@Mapper //保证被扫描到

public interface UserDao {

List queryUser();

}

在service 模块 com.mr包下创建 UserService 接口 并创建对应的实现类 UserServiceImpl

@Service("userService")

public class UserServiceImpl implements UserService {

@Autowired

private UserDao userDao;

@Override

public List queryService() {

return userDao.queryUser();

}

}

在 web 模块下 com.mr包下创建对应的 UserController 代码如下

@Controller

public class UserController {

@Autowired

private UserService userService;

@RequestMapping("queryUser")

public String queryUser(ModelMap map){

List list= userService.queryService();

map.put("list",list);

return "list";

}

}

这里需要建立list.ftl 页面在web 模块下的resource-----templates创建

<#list list as user>

${user.userId}

${user.userName}

${(user.userDate?string("yyyy-MM-dd HH-mm-ss"))!"没有设置时间"} <#--!后如果为空的话 需要显示的内容-->

#list>

具体的freemarker 使用-----https://jb51.net/article/236936.htm

在web 模块的 WebApplication 启动项目访问queryUser 效果如下: 这里展示的是数据库数据

打包可执行jar

因为所有的pom.xml有已经配置好了,只需要动手运行 package打包动作就行了,第一次打包不需要clean,记住以后每次打包之前clean一下,关于为什么打jar包,不打war包这个问题,还有其它会遇到的问题,最后说明

双击运行package,看到BUILD SUCCESS 就证明打包成功了 前提是你的每一个模块下的pom.xml要配置好,谁需要打包,谁不需要打包,谁依赖谁,父工程是否声明了子模块,子模块是否声明了父工程是谁,这些是重点!否则 会焦头烂额

接下来去找你工程目录,web文件夹下的target文件夹,刚才打包好的jar文件,就放在这里了

使用 java -jar web-0.0.1-SNAPSHOT.jar 命令来测试运行打包的可执行jar文件

执行成功 !!!!!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis框架零基础快速入门案例详解
下一篇:浅谈Java中的桥接方法与泛型的逆变和协变
相关文章

 发表评论

暂时没有评论,来抢沙发吧~