相关文章推荐
唠叨的领结  ·  美团 CAT 本地执行抛No such ...·  11 小时前    · 
卖萌的芹菜  ·  mysqld: can't create ...·  2 周前    · 
性感的橙子  ·  dlmopen ...·  1 月前    · 
八块腹肌的眼镜  ·  exec ...·  2 月前    · 
时尚的楼房  ·  小鹏G3正式上市 ...·  1 年前    · 
Java + SpringBoot + Maven + 外部jar打包

Java + SpringBoot + Maven + 外部jar打包

1 个月前
  • 背景

一般开发的工程里面需要的依赖都可以在maven仓库上找到,但有时候需要引入一些外部的jar包到工程,通常会在工程根目录下建一个lib目录,然后添加到工程依赖。

springboot-project-demo
|-- lib (在里面存放外部的jar包)
|-- src
|-- pom.xml

当进行maven package打包时,lib目录中的jar并不会被拷贝至[最终jar下的BOOT-INF/lib 目录中],启动运行程序时会报类不存在的错误。

  • 解决方法
  1. 首先在pom.xml的dependencies节点中下添加目标jar包的依赖。
<dependency>
    <groupId>cn.little-whale</groupId>
    <artifactId>maven-package-lib-demo</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/(需本地引入目标jar包).jar</systemPath>
</dependency>

2. 在pom.xml build标签节点下,配置打包加载资源的目录。

<resources>
      <resource>
          <directory>src/main/resources</directory>
      </resource>
      <resource>
          <directory>lib</directory>
          <targetPath>BOOT-INF/lib/</targetPath>
          <includes>
              <include>*.jar</include>
          </includes>
      </resource>
  </resources>

pom.xml参考

<build>
  <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>
          <version>3.1</version>
          <configuration>
              <source>${java.version}</source>
              <target>${java.version}</target>
          </configuration>
      </plugin>
  </plugins>
  <resources>
      <resource>
          <directory>src/main/resources</directory>
      </resource>
      <resource>
          <directory>lib</directory>
          <targetPath>BOOT-INF/lib/</targetPath>