pom.xml 中的 JDBC Maven 依赖关系

Posted

技术标签:

【中文标题】pom.xml 中的 JDBC Maven 依赖关系【英文标题】:JDBC Maven Dependency in pom.xml 【发布时间】:2014-05-21 17:10:00 【问题描述】:

我在 Eclipse(EE Developer Kepler 版本)中创建了一个 Maven 项目,并且在我的 pom.xml 文件中出现以下错误,“在此代码中缺少工件 com.oracle:ojdbc7:jar:12.1.0.1”

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1</version>
</dependency>

我知道我必须将 jdbc 存储库添加到我的 .m2 文件夹中。我已经通过从以下链接http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html 下载 ojdbc7.jar 来做到这一点

下载该存档后,我打开一个终端(我安装了 Debian)并以 root 身份运行以下命令

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc7  
-Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc7.jar -DgeneratePom=true

之后,我得到了 BUILD SUCCESS 的输出,如果我转到 .m2 文件夹,我会在 com->oracle->ojdbc7 中看到两个名为“ojdbc7-12.1.0.1”的文件.jar.lastUpdated" 和 "ojdbc7-12.1.0.1.pom.lastUpdated" 但 Eclipse 仍然将代码作为错误带入 pom.xml 文件中

我能做些什么来解决这个问题?

【问题讨论】:

您可能只需要执行“Maven > 更新项目”,请参阅此处***.com/questions/20546962/… 【参考方案1】:

如果您使用的是 eclipse,请转到您拥有 pom 的文件夹并尝试以下命令:

mvn -Declipse.workspace=<path-to-your-eclipse-workspace> eclipse:add-maven-repo
mvn eclipse:eclipse

我没有在 Linux 中尝试过,但它应该可以解决您的依赖项/eclipse 路径问题。

【讨论】:

谢谢!我已经运行了这些命令,现在我的 pom.xml 错误已经消失了!但是现在我有另一个错误“Dynamic Web Module 3.0 requires Java 1.6 or newer”关于如何解决这个问题的任何想法? @a.ras2002 看起来您使用的是旧版本的 jre (this,但我真的不知道。 我已经这样做了,还有以下,右键单击项目-> 删除 maven 性质。然后在终端中运行此命令“mvn eclipse:clean”,最后在 eclipse 中删除项目(但不要删除源)并再次导入项目。有了所有这些,该项目现在终于没有错误了 @Roberto 我面临同样的问题,运行此命令后我收到此错误“[错误]在插件 org.apache.maven.plugins 中找不到目标'add-maven-repo' : maven-eclipse-plugin:2.10 在可用目标中 clean, configure-workspace, eclipse, help, install-plugins, myeclipse, myeclipse-clean, rad, rad-clean, remove-cache, resolve-workspace-dependencies, to-maven -> [帮助 1]" .【参考方案2】:
    从菜单中选择“窗口-->显示视图-->其他...” 在对话框中,选择“Maven-->Maven Repositories”并点击 OK。 在 Maven Repositories 视图中,右键单击“Local Repositories-->Local Repository”并从弹出菜单中选择“Rebuild Index”。如果询问您是否确定要重建索引,请点击确定。

如果这不起作用(它应该),尝试在资源管理器视图中右键单击项目,从弹出菜单中选择“Maven-->更新项目...”,确保选中“更新依赖项”在出现的对话框中,然后点击 OK。

顺便说一句,您可能希望将 &lt;scope&gt;runtime&lt;/scope&gt; 添加到 pom 文件中的 dependency 元素中,尽管这与您的问题无关。

【讨论】:

没什么,我已经按照你说的做了,但仍然显示错误...谢谢! 有趣——“更新项目”对话框的作用与上面的mvm eclipse:eclipse 命令相同。 eclipse:add-maven-repo 命令已被弃用,不再需要,因此什么也没做。在对话框中,默认情况下应选中“从 pom.xml 更新项目配置”。你取消勾选了吗? 无论如何,这些命令都不会影响 Eclipse 对本地存储库的索引。由于 Eclipse IIRC 在重新获得焦点时会刷新您的工作区,我猜当您转到命令行并再次返回时,它会刷新您的工作区,这就是当时问题似乎消失的原因。 我不知道为什么错误消失了......正如你所说,更新项目与mvn eclipse:eclipse相同,在对话框中,“从 pom.xml 更新项目配置”已检查...所以我不知道为什么当我执行@RobertoIzquierdo 告诉我的操作时该错误消失了,但是发生了...。只是一个简单的问题,为什么您告诉我将&lt;scope&gt;runtime&lt;/scope&gt; 添加到我的依赖项元素中? (是的,我是 Maven 和 J2EE 的新手) runtime 范围意味着该库仅在运行时需要,编译时不需要。也就是说,在编译代码时,jar 不会添加到类路径中,但在运行编译后的代码时会添加到类路径中。由于驱动程序仅实现 JDBC API 并且不提供任何公开可用的类(您应该使用),因此在编译时不需要它。如果在编译时排除它,Eclipse 会更高效,因为它不必解析 jar 并将找到的内容添加到代码完成中。【参考方案3】:

Oracle JDBC驱动还有一个选择,不是很完美,因为它需要从Oracle注册到maven仓库,但是不需要mvn install:install-file这一步。

在此处查看设置步骤:

https://blogs.oracle.com/dev2dev/entry/oracle_maven_repository_instructions_for https://blogs.oracle.com/dev2dev/entry/how_to_get_oracle_jdbc

【讨论】:

以上是关于pom.xml 中的 JDBC Maven 依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

在myeclipse中maven项目关于ssh整合时通过pom.xml导入依赖是pom.xml头部会报错

三尚筹网项目-后台-基于 Maven 的 MyBatis 逆向工程

三尚筹网项目-后台-基于 Maven 的 MyBatis 逆向工程

Eclipse 中的 Maven 依赖项与 pom.xml 不匹配

maven如何继承父工程的依赖关系

maven父子工程的pom.xml继承