springboot多模块项目打包,springboot+dubbo+maven多模块部署

  springboot多模块项目打包,springboot+dubbo+maven多模块部署

  00-1010创建多模块项目依赖开发工具:idea

  工程结构:

  父工程father

  子模块dao(用于与数据库的持久数据交互)

  子模块实体(实体类)

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

  子模块web(唯一具有启动类的模块,它交互地接收和传输数据)

  关系:靠服务,靠道,靠实体。

  依赖于服务、实体

  道依赖于实体

  实体不依赖任何人,是独立的。

  

目录

新文件项目

 

  联网状态下 选择 default,径直走到下一步。

  项目结构如下

  接下来,完全删除src,父项目也就没必要了,因为父项目只有一个shell的时候就完成了。

  接下来,创建一个子模块项目,右键单击新建模块,选择Spring Initaializr Next。

  重复上述操作来创建服务。现在实体和服务dao模块和web模块都创建好了。可以根据实际需要选择引入mysql、mybatis、web。

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

  删除除web模块之外的其他模块中的应用程序启动项目,以及resources目录中的application.properties配置文件。

  经过上面的操作,如果你发现你的子模块变成了文件夹,没关系,找到Maven项目刷新即可。

  最终项目结果如下

  00-1010打开父pom.xml并将打包方法jar更改为pom。注意:构建内容也需要替换,因为默认的spring-boot-maven-plugin方法在后面打包的时候会一直提示你,你引入的依赖是不存在的!代码如下所示

  ?xml版本=1.0 编码=UTF-8 ?项目xmlns= http://maven . Apache . org/POM/4 . 0 . 0 xmlns : xsi= http://www . w3 . org/2001/XML schema-instance xsi : schema location= http://maven . Apache . org/POM/4 . 0 . 0 http://maven . Apache . org/xsd/maven-4 . 0 . 0 . xsd model version 4。-指定项目的spring boot版本-parentgroupidorg . spring framework . boot/groupid artifactid spring-boot-starter-parent/artifactid version 2.1.3.release/versionrelativepath/!-从存储库- /parent中查找父级!-number-groupidcom.mr/groupidartifactfather/artifactidl版本

  t;version>0.0.1-SNAPSHOT</version><packaging>pom</packaging> <!--父类为pom--><name>father</name><description>Demo project for Spring Boot</description><!--java 版本--><properties><java.version>1.8</java.version></properties><!--管理模块--><modules><module>entity</module><module>dao</module><module>service</module><module>web</module></modules><!--指定项目中的公有依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></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></project>这里有个坑需要注意,dao、service、entity这三个模块的pom.xml文件中不需要build 内容,直接干掉

  entity 的 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"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.mr</groupId><artifactId>entity</artifactId><version>0.0.1-SNAPSHOT</version><name>entity</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</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

dao 的 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"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.mr</groupId><artifactId>dao</artifactId><version>0.0.1-SNAPSHOT</version><name>dao</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入entity--><dependency><groupId>com.mr</groupId><artifactId>entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>

service 模块的 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"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.mr</groupId><artifactId>service</artifactId><version>0.0.1-SNAPSHOT</version><name>service</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</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入dao--><dependency><groupId>com.mr</groupId><artifactId>dao</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!--引入entity--><dependency><groupId>com.mr</groupId><artifactId>entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>

web模块的 pom.xml 内容

 

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

  

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.mr</groupId><artifactId>web</artifactId><version>0.0.1-SNAPSHOT</version><name>web</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><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入dao--><dependency><groupId>com.mr</groupId><artifactId>dao</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!--引入entity--><dependency><groupId>com.mr</groupId><artifactId>entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!--引入service--><dependency><groupId>com.mr</groupId><artifactId>service</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 指定该Main Class为全局的唯一入口 --><mainClass>com.mr.WebApplication</mainClass><layout>ZIP</layout></configuration><executions><execution><goals><goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中--></goals></execution></executions></plugin></plugins></build></project>

到此为止所有的依赖全部完成!接下来就是测试!做了一个简单的查询在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: truemybatis.configuration.map-underscore-to-camel-case=true#配置数据源#德鲁伊 连接池spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.username=wsspring.datasource.password=1spring.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 中添加以下坐标

 

  

<!--连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!--引入freemarker--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>

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<User> queryUser();}

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

 

  

 

  

@Mapper //保证被扫描到public interface UserDao { List<User> queryUser();}

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

 

  

 

  

@Service("userService")public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public List<User> queryService() { return userDao.queryUser(); }}

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

 

  

@Controllerpublic class UserController { @Autowired private UserService userService; @RequestMapping("queryUser") public String queryUser(ModelMap map){ List<User> 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:///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文件

  

 

  执行成功 !!!!!

  到此这篇关于springboot实现maven多模块和打包部署的文章就介绍到这了,更多相关maven多模块和打包部署内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: