Maven 在部署的项目中找不到pom文件中列出的依赖项
我问了一个问题,我想我可能已经找到了问题的根源。我有一个Spring Boot应用程序,它使用一个数据源,Maven 在部署的项目中找不到pom文件中列出的依赖项,maven,spring-boot,Maven,Spring Boot,我问了一个问题,我想我可能已经找到了问题的根源。我有一个Spring Boot应用程序,它使用一个数据源,net.sourceforge.jtds.jdbc.Driver,Spring Boot 2.0.2应该附带Spring Boot starter jpa。然而,当我跑的时候 jar tf my.jar | grep jtds 找不到驱动程序类(服务器上没有列出类路径的maven可执行文件)。我检查类路径所做的一切都反映出jar不在那里 我在两个场景中完成了这项工作:1)当我没有显式地将ja
net.sourceforge.jtds.jdbc.Driver
,Spring Boot 2.0.2应该附带Spring Boot starter jpa
。然而,当我跑的时候
jar tf my.jar | grep jtds
找不到驱动程序类(服务器上没有列出类路径的maven可执行文件)。我检查类路径所做的一切都反映出jar不在那里
我在两个场景中完成了这项工作:1)当我没有显式地将jar添加到pom中时,我在上一篇文章中报告了错误。2) 当我显式地将它添加到pom时,我得到以下错误:
java.lang.IllegalStateException: Cannot load driver class: net.sourceforge.jtds.jdbc.Driver
有人能告诉我发生了什么事吗??我不明白为什么这个类不能被找到和加载。请注意,在Spring Boot的父POM中
如果您还想在生产代码中使用此依赖项的类,请将Maven
范围更改为编译请注意,在Spring引导父POM中
如果您希望在生产代码中也使用此依赖项的类,请将Maven作用域
更改为编译
确定,通过添加具有运行时
作用域的依赖项来解决问题。确定,通过添加具有运行时
作用域的依赖项来解决问题
在打包jar的子pom中,您应该
SpringBootMaven插件。和依赖性如下所示:
net.sourceforge.jtds
jtds
在父pom中:
net.sourceforge.jtds
jtds
${jtds.version}
在打包jar的子pom中,您应该
SpringBootMaven插件。和依赖性如下所示:
net.sourceforge.jtds
jtds
在父pom中:
net.sourceforge.jtds
jtds
${jtds.version}
非常感谢您的回答!但在我的有效pom中,依赖项已经列为compile。我还是按照你的建议做了,jtds仍然不包括在内-(啊,那太接近了……我已经想到要给你指出运行时
,但是排除测试
范围是第一步,我感谢你的回答!但是在我的有效pom中,依赖项已经列为compile。我按照你的建议做了,jtds仍然没有包括在内:-(啊,那太接近了……我已经想到要给你指出运行时
,但是排除测试
范围是实现这一点的第一步
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
</dependency>
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>${jtds.version}</version>
</dependency>