1. 程式人生 > >springboot打jar/war包解決第三方依賴jar包的問題

springboot打jar/war包解決第三方依賴jar包的問題


 
  

轉載自: http://www.jianshu.com/p/574f74d1d0ee

SpringBoot+Maven的專案,有時候會遇到第三方jar包依賴Maven倉庫。Maven有一種方式可以將本地的Jar包依賴到專案中而不需要先deploy到Maven庫上。

具體做法如下:

1. 新建了一個lib包在專案根目錄下,與src同級。(也可不同級,具體看自己喜好)

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}是自帶變數,指的是當前專案的根目錄。

通過這種方式引入依賴後,在編碼的時候沒有問題,但是用mvn clean package打成jar包後執行就是報錯,找不到這些jar包中的相關類。
把jar包解壓後在BOOT-INF/lib裡面也確實沒有發現用上述方式引入的jar包,看來是沒有把lib目錄裡面的jar打進去。
修改pom檔案,在build標籤下增加如下配置:

    <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下,但是必須要增加第二個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>

上面就是SpringBoot專案部署時,打成jar包/war包時第三方依賴jar包的解決辦法。根據需要打成包的型別選擇上述兩種方式之一配置之後。執行Maven clean package即可。



作者:明天你好向前奔跑
連結:https://www.jianshu.com/p/574f74d1d0ee
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。