@Author Jacky Wang
轉(zhuǎn)載請(qǐng)注明出處 , http://www.reibang.com/p/574f74d1d0ee
SpringBoot+Maven
的項(xiàng)目,有時(shí)候會(huì)遇到第三方j(luò)ar包依賴Maven倉(cāng)庫(kù)眉厨。Maven有一種方式可以將本地的Jar包依賴到項(xiàng)目中而不需要先deploy到Maven庫(kù)上座柱。
具體做法如下:
1. 新建了一個(gè)lib包在項(xiàng)目根目錄下,與src同級(jí)拗胜。(也可不同級(jí),具體看自己喜好)
2. pom文件中依賴這樣寫:
<dependency>
<groupId>com.alipay.api</groupId>
<artifactId>sdk</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/sdk-2.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.alipay.api</groupId>
<artifactId>trade-sdk</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/trade-sdk-2.0.jar</systemPath>
</dependency>
${project.basedir}是自帶變量,指的是當(dāng)前項(xiàng)目的根目錄。
通過這種方式引入依賴后嚷狞,在編碼的時(shí)候沒有問題,但是用mvn clean package打成jar包后運(yùn)行就是報(bào)錯(cuò),找不到這些jar包中的相關(guān)類邮绿。
把jar包解壓后在BOOT-INF/lib里面也確實(shí)沒有發(fā)現(xiàn)用上述方式引入的jar包,看來是沒有把lib目錄里面的jar打進(jìn)去攀例。
修改pom文件船逮,在build標(biāo)簽下增加如下配置:
<resources>
<resource>
<directory>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下,但是必須要增加第二個(gè)resource粤铭,不然src/main/resources下的配置文件又打不進(jìn)jar包了挖胃。
---------------------------------------------------------------------------------------------------------------
如果要打成war包,則pom文件需要這樣改:
<!--設(shè)置maven-war-plugins插件梆惯,否則外部依賴無法打進(jìn)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>
上面就是SpringBoot
項(xiàng)目部署時(shí),打成jar包/war包時(shí)第三方依賴jar包的解決辦法酱鸭。根據(jù)需要打成包的類型選擇上述兩種方式之一配置之后。執(zhí)行Maven clean package即可垛吗。