gtl*_*wig 5 java scope jdbc maven
对于我的开发站,我需要我的项目来“查看”JDBC 驱动程序。但是当我将项目部署到服务器时,如果 JDBC 驱动程序位于 /lib 文件夹中,它们将导致容器行为异常。
我尝试将<scope>provided</scope>
.war 文件设置为我不想打包的驱动程序,但我无法让我的 IDE 运行该项目。
声明 JDBC 驱动程序的正确范围是多少,pom.xml
这样它们就不会被打包进行部署,并且我可以在我的开发站上使用它们?<scope>runtime</scope>
?
提前致谢,
您的问题的简短答案是:您应该使用provided
范围。
为什么不runtime
?让我们检查一下 Maven 文档:
假如
这很像编译,但表明您期望 JDK 或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition 构建 Web 应用程序时,您可以将 Servlet API 和相关 Java EE API 的依赖关系设置为提供的范围,因为 Web 容器提供了这些类。此作用域仅在编译和测试类路径上可用,并且不可传递。
运行
此范围表示编译不需要依赖项,但执行需要依赖项。它位于运行时和测试类路径中,但不在编译类路径中。
因此,Maven 可能不会runtime
在编译的类路径中公开作用域依赖项,因此您将无法直接在代码中使用它们。但是,类似的代码Class.forName("class.from.runtime.Scope")
可以编译正常。
我猜问题是你的 IDE 没有捕获pom.xml
更改。通常,这个问题可以通过“清理缓存”或“更新”/“同步”项目来解决。以下是如何在Eclipse和IDEA中执行此操作。