天天看點

springboot打包本地依賴的jar包的方式問題背景技術版本解決方案

問題背景

springboot的項目,其中有一個service子產品依賴了一個放在項目裡面的jar,同時又不想把它推送到maven私服上去。

同時假設項目的子產品是illegal_server, illegal_service。并且illegal_server子產品依賴illegal_service。放在illegal_service裡面的jar名字是illegal_1.0.jar。

技術版本

springboot:2.1.8,jdk:1.8,maven:3.3.9

解決方案

方案一

該方案對應的是要copy的jar的名稱是可以按照${artificatId)-${version}.jar 這樣的命名規範進行copy的情況。

假設本地jar叫做illegal_1.0.jar,在service和server子產品的libs目錄都添加這個jar包。該方案在最終生成的spirngboot的啟動jar裡面的名字叫illegal-1.0.jar。

同時service子產品添加如下依賴配置。

<dependency>
        <groupId>illegal</groupId>
        <artifactId>illegal</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/illegal_1.0.jar</systemPath>
        <optional>true</optional>
    </dependency>
           

修改server子產品的pom裡面的springboot plugin,同時添加下面的依賴配置

<dependency>
        <groupId>illegal</groupId>
        <artifactId>illegal</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/illegal_1.0.jar</systemPath>
    </dependency>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <includeSystemScope>true</includeSystemScope>
        </configuration>
    </plugin>
           

方案二

該方案對應的是要copy的jar的名稱不能按照${artificatId)-${version}.jar 這樣的命名規範進行copy的情況。必須是跟原始jar包名稱相同的情況。

假設本地jar叫做illegal_1.0.jar,在service和server子產品的libs目錄都添加這個jar包。該方案在最終生成的spirngboot的啟動jar裡面的名字叫illegal_1.0.jar。

同時service子產品添加如下依賴配置。

<dependency>
        <groupId>illegal</groupId>
        <artifactId>illegal</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/illegal_1.0.jar</systemPath>
        <optional>true</optional>
    </dependency>
           

server子產品的pom裡面的springboot plugin插件保持預設,添加如下resource配置

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <resource>
        <directory>${project.basedir}/libs</directory>
        <targetPath>BOOT-INF/lib/</targetPath>
            <includes>
                <include>**/*.jar</include>
            </includes>
    </resource>
           

繼續閱讀