場景
公司要對springboot項目依賴的jar包進行升級,但是遇到一個問題,項目打包之后,沒辦法看到他里面依賴的jar包,版本到底是不是升上去了,沒辦法看到。
下面是項目打的jar包
我們通過反編譯工具jdgui,來看一下jar包文件內容,我們發現里面根本沒有看到依賴的jar包
既然看不到依賴的jar包,那么就沒辦法確定,jar包版本是否升級成功,那應該怎么辦呢?
解決辦法
maven有一個辦法,就是可以將依賴的jar包輸出的指定的目錄。具體配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hidata.kafka</groupId><artifactId>hijob-kafka</artifactId><version>0.1</version><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.18</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><bboss.version>5.8.6</bboss.version></properties><dependencies><!-- spring boot --><dependency>.....</dependency></dependencies><build><resources><resource><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering><excludes><exclude>static/**</exclude></excludes></resource><resource><directory>${project.basedir}/src/main/resources</directory><filtering>false</filtering><includes><include>static/**</include></includes></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.hidata.kafka.HijobKafkaApplication</mainClass><layout>ZIP</layout><includes><include><groupId>nothing</groupId><artifactId>nothing</artifactId></include></includes></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>7</source><target>7</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><!--target/lib是依賴jar包的輸出目錄,根據自己喜好配置--><outputDirectory>target/lib</outputDirectory><excludeTransitive>false</excludeTransitive><stripVersion>false</stripVersion><includeScope>runtime</includeScope></configuration></execution></executions></plugin></plugins></build>
</project>
重要的事再說一遍,其實核心就是這一句配置
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><!--target/lib是依賴jar包的輸出目錄,根據自己喜好配置--><outputDirectory>target/lib</outputDirectory><excludeTransitive>false</excludeTransitive><stripVersion>false</stripVersion><includeScope>runtime</includeScope></configuration></execution></executions></plugin>
我們再打包一下看看效果:
我們發現target多了一個文件夾lib,其實他就是存放項目所依賴的jar包的。打開lib文件夾,發現里面全部都是jar包
這樣就可以知道,jar包的版本到底有沒有升級成功了。