zoukankan      html  css  js  c++  java
  • Code-Review-Maven编译(第三方jar包引用)

    Code-Review-SpringBoot-Maven编译(第三方jar包引用)

      在使用maven编译项目时,有时候咱们可能会使用一些第三方的jar包依赖库,比如第三方支付类的接入,大多出于安全考虑,会单独给提供jar包,可是这些jar包依赖库又没有在共有的maven仓库。 一般只能下来放到本项目的lib目录下。如果在打包的时候不进行拷贝处理,会导致打包后的target.jar中不会有lib文件夹中的相关第三方jar包。 打包后没法运行起来,所以需要对第三方jar进行单独处理,让maven打包时可以把使用到外部jar打进去。主要就是在build中加resourcesapache。

      备注:pom.xml的配置很重要。

             观察完整的pom.xml配置文件,重点关注resources 节点包含了俩个  resource 。一个指定的第三方jar包的位置。一个指定了配置文件的位置。resource的配置至关重要。如果你没有配置

    <resource>
        <directory>src/main/resources</directory>
        <targetPath>BOOT-INF/classes/</targetPath>
    </resource>

    的情况下:你很大概率会遇到:

    2020-12-28 16:28:08.947  WARN 18018 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectingArgumentResolverBeanPostProcessor' defined in class path resource [org/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.cache.annotation.ProxyCachingConfiguration'

    bean装载的异常,主要原因就是没有找到相关的配置文件导致的。

    编译后的依赖文件(maven依赖以及第三方jar)位置:/BOOT-INF/lib 。

    自己项目编译后文件(其中应该包含配置文件):BOOT-INF/classes  



    重点: 完整的pom.xml配置,以下是完整pom.xml build配置节。

    <build>
            <defaultGoal>compile</defaultGoal>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                        <compilerArguments>
                            <!-- 打包本地jar包 -->
                            <extdirs>${project.basedir}/src/libs</extdirs>
                        </compilerArguments>
                    </configuration>
                </plugin>
            </plugins>
    
            <resources>
                <resource>
                <directory>${project.basedir}/src/libs</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
                </resource>
    
                <resource>
                    <directory>src/main/resources</directory>
                    <targetPath>BOOT-INF/classes/</targetPath>
                </resource>
    
            </resources>
    
        </build>

    以上是解决 用maven编译项目时,集成第三方jar包的解决方案。我在自己的项目中实际测试后,部署成功。如果疑问,请留言沟通。祝好。

  • 相关阅读:
    AT2172 Shik and Travel
    bzoj5138 [Usaco2017 Dec]Push a Box
    bzoj3545 [ONTAK2010]Peaks、bzoj3551 [ONTAK2010]Peaks加强版
    bzoj5183 [Baltic2016]Park
    bzoj4423 [AMPPZ2013]Bytehattan
    bzoj2125 最短路
    斐波那契数列小结
    记一场模拟赛
    洛谷2387 BZOJ3669魔法森林题解
    COGS-2638 区间与,异或,询问max
  • 原文地址:https://www.cnblogs.com/mbailing/p/14200331.html
Copyright © 2011-2022 走看看