详解springboot解决第三方依赖jar包的问题

公司现在用的是springboot+maven,想要把一些老的项目都改成这种框架。但是一些老的项目中有好多第三方的jar包或者是自己的jar包,maven库上没有。最初的解决方案是一个个的deploy到maven库上,但是遇到太多的三方jar包就太费事了。网上查了一下发现maven有一种方式可以将本地的Jar包依赖到项目中而不需要先deploy到maven库上。具体做法如下:

跟普通的java项目一样,新建个lib目录放jar包,我建在了src下。

pom文件中依赖这样写:

<!--添加外部依赖-->
  <dependency>
   <groupId>Ice</groupId>
   <artifactId>Ice</artifactId>
   <version>1.0</version>
   <scope>system</scope>
   <systemPath>${basedir}/src/lib/Ice.jar</systemPath>
  </dependency>

basedir是自带变量,指的是当前项目的绝对路径,三围自己随便写。

通过这种方式引入依赖后,在编码的时候没有问题,但是用mvn clean package打成jar包后运行就是报错,正式找不到这些jar包中的相关类。把jar包解压后在BOOT-INF/lib里面也确实没有发现用上述方式引入的jar包,看来是没有把src/lib目录里面的jar打进去,后来通过查找也终于找到方法了,修改pom文件,在build标签下增加如下配置:

<resources>
   <resource>
    <directory>src/lib</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>

目的就是把src/lib下的jar打到BOOT-INF/lib下,但是必须要增加第二个resource,不然src/main/resources下的配置文件又打不进jar包了。

如果要打成war包,则pom文件需要这样改:

<!--设置maven-war-plugins插件,否则外部依赖无法打进war包-->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
     <webResources>
      <resource>
       <directory>lib</directory>
       <targetPath>WEB-INF/lib/</targetPath>
       <includes>
        <include>**/*.jar</include>
       </includes>
      </resource>
     </webResources>
    </configuration>
   </plugin>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • spring boot加载第三方jar包的配置文件的方法

    前言 今天收到一封邮件,大概内容如下:spring boot鼓励去配置化,那么怎么将第三方jar包中的xml去配置化了? 其实,这个问题,在前面的文章中也有提到,http://www.jb51.net/article/125700.htm 下面,我们就以Quartz定时任务为例,单独对这个问题来进行说明,如何实现去配置化. 如果不使用spring boot,我们配置一个简单的定时任务时,需要引入以下配置文件: <!-- 配置需要定时执行的任务类以及方法 --> <bean id=&quo

  • 详解springboot解决第三方依赖jar包的问题

    公司现在用的是springboot+maven,想要把一些老的项目都改成这种框架.但是一些老的项目中有好多第三方的jar包或者是自己的jar包,maven库上没有.最初的解决方案是一个个的deploy到maven库上,但是遇到太多的三方jar包就太费事了.网上查了一下发现maven有一种方式可以将本地的Jar包依赖到项目中而不需要先deploy到maven库上.具体做法如下: 跟普通的java项目一样,新建个lib目录放jar包,我建在了src下. pom文件中依赖这样写: <!--添加外部依赖

  • 详解SpringBoot如何删除引用jar包中的无用bean

    目录 前言 代码示例 实现代码示例 前言 公司有个项目,时间比较赶,而且项目的部分需求,和之前做的项目部分功能一样,为了赶速度和直接将之前多模块的maven项目中的部分模块,直接以jar包的形式引入到新项目中了,虽然省去了不少开发时间,但是造成项目需要导入引入项目jar的相关依赖,导致项目臃肿,启动很慢.有没有办法让项目只加载自己需要的bean呢? 当然我们可以直接修改源代码重新打包引入去解决,但是这个办法太多麻烦. 通过百度的手段,查询可以在springboot启动类上用@ComponentS

  • IDEA对使用了第三方依赖jar包的非Maven项目打jar包的问题(图文详解)

    前言: 最近,遇到了一个问题,都快把我整疯了:这个问题开始是由 使用IDEA 对 非Maven项目进行打 Jar 包 引起的:本来就是想简简单单的打个 jar 包,并将使用的第三方依赖 jar 包打进去,但是问题就出现在了项目中依赖的第三方 jar 包( bcprov-jdk15on-1.54.jar )存在签名,那在打包过程中会把 签名 破坏掉,导致在使用打好的jar包时报错: JCE cannot authenticate the provider BC . 注意:如果依赖的第三方jar包不

  • 详解springboot解决CORS跨域的三种方式

    目录 一.实现WebMvcConfigurer接口 二.实现filter过滤器方式 三.注解@CrossOrigin 四.实战 五.cookie的跨域 一.实现WebMvcConfigurer接口 @Configuration public class WebConfig implements WebMvcConfigurer { /** * 添加跨域支持 */ @Override public void addCorsMappings(CorsRegistry registry) { // 允

  • 详解Android studio如何导入jar包方法

    下面我就总结一下Android studio大家在导入jar包时遇到的一些问题和解决方法: 1,首先先说一下怎么在AS 中找到sdk,jdk,ndk的安装路径,可能一部分人一开始找不到,下面贴出方法: Android studio 中更改sdk的路径,如下图,在右边红色方框中更改sdk的路径 还有一种更好的方式可以把sdk,jdk,ndk的路径全部找到,首先File---Other Settings---Default Project Structure...,打开如下图界面,从红方框处即可直接

  • 详解spring boot引入外部jar包的坑

    前言:由于项目需求,短信验证码的接口需要换成阿里大于的,但是尴尬的发现阿里大于的jar包没有maven版本的,于是便开始了一上午的操蛋引包之路.按照套路来说,自然应该是百度一波,但是百度了好久,找了好多方案之后发现,没一个有用的,而且文章的抄袭.拷贝十分严重,试了N种方案,都是错的,都没有将外部jar包打包到BOOK-INF文件夹下.最终,在第N次尝试之后,终于在打的jar包里将外部的jar包导入进来.特此记录下,防止再犯!!! 首先在新建libs文件夹(根目录或者resource目录下都可以)

  • 详解SpringBoot中实现依赖注入功能

    今天给大家介绍一下SpringBoot中是如何实现依赖注入的功能. 在以往spring使用中,依赖注入一般都是通过在Spring的配置文件中添加bean方法实现的,相对于这个方式SpringBoot的实现方式就显得非常便捷了.SpringBoot的实现方式基本都是通过注解实现的. 下面来看一下具体案例,这里我编写了三个测试类用于测试依赖注入到底是否可以正确实现. TestBiz接口: package example.biz; public interface TestBiz { public S

  • 详解SpringBoot 解决拦截器注入Service为空问题

    一.自定义拦截器实现 HandlerInterceptor 接口 /** * * Created by zhh on 2018/04/20. */ public class MyInterceptor implements HandlerInterceptor { @Autowired private NetworkProxyInfoService networkProxyInfoService; @Override public void afterCompletion(HttpServlet

  • springboot的war和jar包的使用详解

    本篇和大家分享的是通过maven对springboot中打war包和jar包:war通常来说生成后直接放到tomcat的webapps下面就行,tomcat配置自动解压war,而jar一般通过命令行部署和启动: 首先,来实战怎么生成war包,主要来说可以分为3个步骤: •程序入口改造 •排除springboot内置tomcat •spring-boot-maven-plugin插件中配置程序入口 程序入口改造,我们需要把springboot的main入口屏蔽掉,然后继承SpringBootSer

  • 详解springBoot启动时找不到或无法加载主类解决办法

    1.jar包错误 第一步:首先鼠标键右击你的项目,点击run as-->maven clean 第二步:鼠标键右击你的项目,run as--->maven install:在eclipse控制台你可以看见报错的jar包: 第三步:去maven仓库删除对应的jar,右击你的项目,maven-->update project(重新下载jar包): 第四步:重复一,二步骤,找到你的启动类,run as java application;问题解决 2.jdk报错 打开你的项目结构,找到libra

随机推荐