zoukankan      html  css  js  c++  java
  • springboot项目如何打包给其他项目引用

    背景
    springboot项目要怎么打包,才能被其他项目GAV引入? 打成springboot的可运行jar是不行的,要用maven插件打包。

    例子
    springboot项目被 mvn install 打包并安装到本地maven仓库后,被另外一个springboot项目引入,引入后发现JAR包存在却无法import JAR包中的类的问题。详细情况如下

    两个项目

    A(springboot)
    B(springboot)
    A在mvn install 到本地仓库后,其GAV被B引入,可以看到B的库里确实引入了A,但是却无法使用A里的类。如下红色


    A的JAR包,看到了BOOT-INF,其他正常可以用的JAR包是没这个目录的。springboot打包的是springboot特有格式的jar包,即可以运行的fat jar,并不是传统的maven的JAR包,怎么解决?

    修改A项目的pom.xml,打包插件改一下,使用maven的就行了

    <plugins>
    <!--<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>-->


    <!-- 要排除启动类 -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.8</source> <!--指明源码用的Jdk版本-->
    <target>1.8</target> <!--指明打包后的Jdk版本-->
    <!-- 如果发现依然排除不了,考虑先clean再install-->
    <excludes>
    <exclude>
    com/wyf/test/sub/AopFilterSpringinterceptorOrderingApplication.java
    </exclude>
    </excludes>
    </configuration>
    </plugin>
    </plugins>
     
    注意点
    1、不要将启动类打包进去
    注意!注意!注意! 要将启动类排除掉,或删掉或注释掉再打包。

    如果不排除,它的@SpringBootApplication注解因包含了@ComponentScan,会导致项目B如果配置扫描jar包路径,并且扫描到这个启动类,会拉起A项目所有bean的实例化。详细的情况见下面的例子

    A项目没有将springboot启动类排除并打包给B项目引入,B项目使用如下扫描规则

    @ComponentScan(basePackages = {"B项目扫描路径", "A项目路径"},
    excludeFilters = {@ComponentScan.Filter(value = {ClassInA.class}, type = FilterType.ASSIGNABLE_TYPE)})

    假设 "A项目路径" 里包含了A项目里的启动类,由于这个启动类有@SpringBootApplication(包含@ComponentScan),会导致 ClassInA 这个被实例化。虽然B项目里是排除ClassInA的实例化的,但是A项目却实例化了ClassInA。最终结果就是B项目的排除没有生效。

    这里涉及到两个@ComponentScan(一个在B项目,另一个是A项目由@SpringBootApplication所引入的@ComponentScan),这两个是互相独立起作用的,一个禁止一个允许,最终导致实例化了

     
    2、排除规则不生效怎么办?
    这个写法不生效? 先clean再install

    <excludes>
    <exclude>
    com/wyf/test/sub/AopFilterSpringinterceptorOrderingApplication.java
    </exclude>
    </excludes>
    ————————————————
    版权声明:本文为CSDN博主「石头StoneWang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/w8y56f/article/details/105003980

  • 相关阅读:
    BZOJ 3625: [Codeforces Round #250]小朋友和二叉树
    HDU 2069 Coin Change
    HDU 1709 The Balance
    HDU 1398 Square Coins
    HDU 1171 Big Event in HDU
    HDU 1085 Holding Bin-Laden Captive!
    BZOJ 3167: [Heoi2013]Sao
    BZOJ 1408: [Noi2002]Robot
    BZOJ 3163: [Heoi2013]Eden的新背包问题
    【Tsinsen-A1486】树(王康宁) 点分治 + Trie
  • 原文地址:https://www.cnblogs.com/javalinux/p/15291240.html
Copyright © 2011-2022 走看看