maven使用注意事项

387 阅读3分钟

maven打包注意事项

一、如何解决依赖矛盾

在使用SpringBoot进行开发时:将通用的模块(不存在启动类的模块)和工具类,统一放到 common包下,其他微服务模块依赖通用模块。工具类构成:

1、通用的普通工具类

2、统一定义的返回结果、异常处理等

3、使用SpringCloud OpenFeing 远程调用时将返回结果封装成工具类封装到uitls中定义vo对象。避免微服务A模块直接依赖B模块。A、B模块统一通过依赖common 模块实现远程结果的调用。

项目结构说明:在服务类中只放能够启动类的微服务,通用模块只放通用类。避免模块依赖杂乱重复依赖。

1616046702457.png

二、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包名称

16457.png