問題背景
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>