1. 程式人生 > >Springboot中引入本地jar包,並通過maven把專案打成可執行jar包

Springboot中引入本地jar包,並通過maven把專案打成可執行jar包

       最近把以往的老專案用SpringBoot進行了重構,老專案中有部分本地依賴包不是放在maven庫裡的,是本地開發直接引入,需要在mvn package的時候把本地依賴jar也打進可執行包中。

這種通用問題,在網上找了一圈卻沒發現什麼好的解決辦法,表示很驚訝。特此把解決辦法記錄共享下。

1.網上較多的推薦方法:在pom檔案定義依賴來一一對應本地依賴的相關jar包

<dependency>
            <groupId>com.aliyun.alicom</groupId>
            <artifactId>alicom-mns-receive-sdk</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/alicom-mns-receive-sdk-1.0.0.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.aliyun.mns</groupId>
            <artifactId>aliyun-sdk-mns</artifactId>
            <version>1.1.8</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/aliyun-sdk-mns-1.1.8.jar</systemPath>
        </dependency>
</dependency>

參考文章:https://www.cnblogs.com/liukunjava/p/9577768.html

但是當本地jar包個數較多的時候,一個個的新增pom依賴,顯得有點兒麻煩

2.新增maven外掛(親試可行)

 在resource目錄下新建一個目錄來存放本地依賴jar包

然後在pom檔案中新增

maven-compiler-plugin

外掛,並設定本地依賴檔案的路徑

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version>
        <inherited>true</inherited>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
          <compilerArguments>
            <extdirs>src/main/resources/lib/cdh</extdirs>
          </compilerArguments>
        </configuration>
      </plugin>
    </plugins>
    <resources>
      <resource>
        <directory>src/main/resources/lib/cdh</directory>
        <targetPath>BOOT-INF/lib/</targetPath>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <excludes>
          <exclude>**/*.jar</exclude>
        </excludes>
        <targetPath>BOOT-INF/classes/</targetPath>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <excludes>
          <exclude>**/*.jar</exclude>
        </excludes>
        <targetPath>./</targetPath>
      </resource>
    </resources>
  </build>

 

這樣當執行mvn package時就會引入設定目錄下的所有本地依賴包,通過idea直接跑或者rebuild都是沒問題的。