0

我有一个创建可执行 fat 的 Spring Boot Maven 项目.war。我可以毫无问题地运行它.warjava -jar因为所有依赖项都位于 far .war.

但是,我无法使用 Spring Boot Devtools 运行该项目,mvn spring-boot:run因为它无法在运行时找到一些依赖项并引发未处理的异常。

例如,我们有一个间接依赖jaxb-runtime-2.3.1.jar,它又依赖于jaxb-api.2.3.1.jar. 两者.jars都存在于脂肪中,.war但如果我用mvn spring-boot:run它运行项目可以找到jaxb-runtime好的但找不到jaxb-api消息:

java.nio.file.NoSuchFileException: ~/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-api-2.3.1.jar

注意,jaxb-api-2.3.1.jar存在于 Maven 缓存中:

~/.m2/repository/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar

但是,它似乎正在与jaxb-runtime-2.3.1.jar位于以下位置的父级相同的位置寻找它:

~/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/

有一长串类似的例外遵循这种模式。这是一个相当大的项目,但这里有一些我们正在使用的版本:

Spring Boot: 2.1.9.RELEASE
spring-boot-maven-plugin: 2.1.9.RELEASE
maven-compiler-plugin: 3.8.1
spring-boot-devtools: not specified in pom

为什么不spring-boot:run以与 maven 构建相同的方式定位依赖项?我如何指示它在哪里找到这些依赖项?

4

0 回答 0