maven打包注意事项
一、如何解决依赖矛盾
在使用SpringBoot进行开发时:将通用的模块(不存在启动类的模块)和工具类,统一放到 common包下,其他微服务模块依赖通用模块。工具类构成:
1、通用的普通工具类
2、统一定义的返回结果、异常处理等
3、使用SpringCloud OpenFeing 远程调用时将返回结果封装成工具类封装到uitls中定义vo对象。避免微服务A模块直接依赖B模块。A、B模块统一通过依赖common 模块实现远程结果的调用。
项目结构说明:在服务类中只放能够启动类的微服务,通用模块只放通用类。避免模块依赖杂乱重复依赖。
二、SpringBoot配置打包插件的使用
0、项目打包类型说明
packing默认是jar类型,不写时默认打成jar包。即可运行的java文件
pom ---------> 父类型都为pom类型
jar ---------> 内部调用或者是作服务使用
war ---------> 需要部署在容器中的项目
1、主项目模块(guli_parent):定义依赖版本、子模块包含
-
打包方式:pom ,pom类型指定打包为父工程
-
管理的子模块(项目):不在该modules中的模块打包时。并不会进行打包,因此打包时要检查是否全部包含子模块的module,避免删除子模块时,module未更新问题。
<modules> <module>service</module> <module>common</module> <module>canal_clientedu</module> <module>infrastructure</module> </modules> -
SpringBoot配置打包依赖:使用boot打包方式。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
2、common通用模块的打包配置
通用 父模块在打包时(pom类型),默认继承父pom打包方式,将模块打成执行的jar包。而我们通用模块并不需要可执行,通用模块中没用启动类。只是作为其他微服务的通用依赖进行使用。因此需要单独进行设置打包属性。注意module 标签指定所有采用本方法进行打包的子子通用模块。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--让maven不打包可执行jar,不扫描项目的main函数-->
<layout>NONE</layout>
<!--普通jar和可执行jar不同名,普通jar为xx.jar , 可执行jar为 xx-exec.jar-->
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
3、service微服务核心模块
微服务核心模块进行打包时,默认继承父pom打包方式。打成可执行的jar包。但需注意在进行打包时.xml配置文件和resources资源包下application配置文件是否丢失。使用SpringBoot打包插件进行编译时,默认不编译src/mina/java 下的xml文件。因此需指定在进行打包时,也将java下的xml文件进行打包。xml指定后有时也需指定 resources文件的配置文件。不然maven进行打包时,可能会丢失application配置文件。
<!-- 项目打包时会将java目录中的*.xml文件也进行打包 **:表示多层路径包 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
4、打包完成后检查target目录生成编译文件位置,打包时忽略test步骤
5、使用java命令执行运行的jar包
打包完成后,在生成target目录中找到jar包。进入jar包所在目录,使用命令运行: java –jar jar包名称