如何在另一個項目中向Spring Boot Jar添加依賴項?我有一個Spring Boot應用程序,我已經創建了一個Jar。以下是我的pom.xml:<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- WebJars -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency></dependencies><build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins></build>我想在我的其他應用程序中使用此Jar,因此將此jar添加到我的應用程序中。但是,當我在那個Jar中調用一個方法時,它正在拋出一個ClassNotFoundException。我該如何解決這個問題?如何向Spring Boot JAR添加依賴項?
3 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
默認情況下,Spring Boot會將JAR重新打包為可執行的JAR,并將所有類放入其中BOOT-INF/classes
,并將所有依賴庫放入其中BOOT-INF/lib
。創建這個胖JAR的結果是你不能再將它用作其他項目的依賴項。
來自Custom repackage分類器:
默認情況下,
repackage
目標將使用重新包裝的工件替換原始工件。對于代表應用程序的模塊而言,這是一種理智的行為,但如果您的模塊用作另一個模塊的依賴項,則需要為重新打包的模塊提供分類器。原因是應用程序類被打包,
BOOT-INF/classes
以便依賴模塊無法加載重新打包的jar類。
如果要保留原始主工件以將其用作依賴關系,可以classifier
在repackage
目標配置中添加:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.4.1.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions></plugin>
使用此配置,Spring Boot Maven插件將創建2個JAR:主要的一個將與通常的Maven項目相同,而第二個將附加分類器并且是可執行的JAR。

慕斯王
TA貢獻1864條經驗 獲得超2個贊
Tunaki的答案是正確的,但在Spring Boot 2中不起作用。
Spring Boot 1.x
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.20.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions> ... </plugin>
閱讀更多
Spring Boot 2.x
如果您正在使用
spring-boot-starter-parent
,repackage
目標將在具有id的執行中自動執行repackage
。在該設置中,只應指定配置,如以下示例所示:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <id>repackage</id> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions> ... </plugin>
閱讀更多
- 3 回答
- 0 關注
- 1335 瀏覽
添加回答
舉報
0/150
提交
取消