由于明天要发布测试版本,所以今天要打个SpringBoot的jar包,本以为很简单,毕竟平时都是mvn clean packge之后target目录下就能出现你想要的jar包,但是这次的,有点特别。
运行环境
| 说明 | 版本 |
|---|---|
| JDK | 1.8 |
| Maven | 3.5.4 |
| SpringBoot | 2.1.3.RELEASE |
项目结构
===============
crm
-libs
—aa.jar
—bb.jar
-src
-pom.xml
===============
可以看到加粗部分,引入了aa.jar和bb.jar,有些人会问,这个两个jar用dependency的方式引入进来,然后从中央库中下载下来就好了,当然中央库或者本地库中有的话,是可以的,在某些特殊情况下,本地库有也引入不进来,博主也表示一脸懵逼中…
在IDEA中,我们可以右键两个jar包,点击Add as library,在IDEA中运行项目就能畅通无阻了,但是发版不可能是在IDEA这种IDE中运行项目,所以打包是必须的。
遇到的问题
按照正常做法,执行mvn clean packge,但是这时候就报错了,各种找不到符号,找不到类。
解决办法
在IDEA中点开jar包,找到jar包下的META-INF/maven.xxxxxx/pom.xml,确认artifactId、groupId、version以备使用,此处假设jar包名为aaa.jar、artifactId为helloword、groupId为com.demo、version为1.0.0
在项目pom.xml的
<dependencies>标签中添加如下标签1
2
3
4
5
6
7<dependency>
<groupId>com.demo</groupId>
<artifactId>helloword</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/aaa.jar</systemPath>
</dependency>其中要注意下systemPath的值,
${project.basedir}是项目的根目录。需要额外引入多少个jar包就需要写多少个这种标签。
在项目pom.xml的
<build>标签中添加如下标签1
2
3
4
5
6
7
8
9
10
11
12
13<resources>
<resource>
<directory>${project.basedir}/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>执行
mvn clean packge即可打包
注意
需要注意的是,在Maven3.5.4能够解决这个问题,不保证其他Maven版本是否也能通过这种方式解决。