如何在POM中指定JAR,使其从包装中排除,但在IntelliJ中运行时可用?

时间:2017-08-31 09:16:24

标签: maven intellij-idea

我有一个项目,需要在部署时选择几个依赖版本 - 即在类路径中指定。

提供的范围可防止打包依赖项,但当我尝试从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。

2 个答案:

答案 0 :(得分:2)

如果您将jar标记为<provided>,则类需要由运行周围战争/耳朵的容器提供。

当您从IntelliJ中运行项目时,它可能部署在某种容器上。确保此容器为您提供<provided>个依赖项。

答案 1 :(得分:0)

最后的方法是创建两个maven配置文件,一个用于本地运行,另一个用于打包。当使用compile时,本地配置文件使用provided范围。