我有一个项目,需要在部署时选择几个依赖版本 - 即在类路径中指定。
提供的范围可防止打包依赖项,但当我尝试从IntelliJ IDEA中运行时项目失败
e.g。
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.3.1</version>
<scope>provided</scope>
</dependency>
产生
{stacktrace ...}
Caused by: java.lang.ClassNotFoundException: javax.jms.ConnectionFactory
如果删除范围,项目运行正常,但当然包括jar。
答案 0 :(得分:2)
如果您将jar标记为<provided>
,则类需要由运行周围战争/耳朵的容器提供。
当您从IntelliJ中运行项目时,它可能部署在某种容器上。确保此容器为您提供<provided>
个依赖项。
答案 1 :(得分:0)
最后的方法是创建两个maven配置文件,一个用于本地运行,另一个用于打包。当使用compile
时,本地配置文件使用provided
范围。