Oracle JDBC ojdbc6 Jar作为Maven依赖项


103

我似乎无法让Maven将ojdbc6.jar文件捆绑到项目的war文件中。当直接为Hibernate工具指定依赖项时,我可以在POM文件中使用它。但是它不会与项目的war文件捆绑在一起,因此我的项目无法在Tomcat上运行。

我已经尝试了所有可以在网上找到的解决方案,包括为此问题在此处指定的解决方案:

在Maven存储库中查找Oracle JDBC驱动程序

最近,我做了以下事情:

  1. 将jar文件下载到我的机器上

  2. 运行以下命令以将jar安装到我的本地存储库中:

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

    (我也尝试过该命令的各种变体。)

  3. 最后,将依赖项放入pom文件中:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
    
  4. 我运行一个干净的版本,但失败了:

    mvn -U clean package
    
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building jazztwo 0.0.1
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.jar
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.700s
    [INFO] Finished at: Tue Mar 27 15:06:14 PDT 2012
    [INFO] Final Memory: 3M/81M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project jazztwo: Could not resolve dependencies for project edu.berkeley:jazztwo:war:0.0.1: Could not find artifact com.oracle:ojdbc6:jar:11.2.0.3 in central (http://repo1.maven.org/maven2) -> [Help 1]
    

为什么不起作用?我准备把昂贵的计算机零件扔到整个房间里。这浪费了很多时间。(谢谢您,甲骨文。我们又向您支付了多少?)

是因为我在Mac上吗?


6
您可以检查文件ojdbc6-11.2.0.3.jar在本地存储库中的正确文件夹中是否可用?
拉古拉姆

1
jar文件似乎永远不会复制到存储库。只有一堆文件似乎可以引用它。是否需要确切地调用该文件?它只是我的lib目录中的ojdbc6.jar。
Marvo 2012年

15
嗯!所以mvn install:install-file没有用。您应该给出绝对位置ojdbc6.jar或从包含它的文件夹中运行命令。文件名没有问题。您可以使用-X标志运行,以便调试信息。
拉古拉姆

运行时是否有输出install-file?Maven应该告诉您将文件安装到的位置或是否有任何错误。
nwinkler 2012年

1
无关紧要的是:您应该考虑使用存储库镜像(例如Nexus,Artifactory,Archiva等)。您可以在此处上传文件,它不仅对您有用,而且对使用同一镜像的其他人也都可用。
nwinkler 2012年

Answers:


136

最好将新的Maven存储库(最好使用自己的工件)添加到项目中,而不是将其安装到本地存储库中。

Maven语法:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>
... 
<repositories>
    <repository>
      <id>codelds</id>
      <url>https://code.lds.org/nexus/content/groups/main-repo</url>
    </repository>
  </repositories>

Grails示例:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'

3
最终,这就是我们所做的。我们在这里建立了一个存储库,现在我们所有的项目都使用它。但是,我认为了解这两种方法很有用。
Marvo 2012年

3
lds.org存储库合法吗?根据此答案,这是非法的:stackoverflow.com/a/1074971/1415732
Alden 2014年

2
我想知道,如果我将依赖项安装到我的公司资料库中,是否也违法?还是只有公共仓库是非法的?Oracle的错误是他们的库没有公共Maven存储库。我希望有人在自己的存储库中共享该库(并且可以始终访问该库)。
Ondrej Kvasnovsky 2014年

3
Ondrej:据我所知,只有公共存储库才是非法的。我公司按照您的建议将ojdbc托管在私有Maven存储库(人工工厂)中。
雷·迈尔斯

3
当然,向您的项目添加一些任意的仓库是“更好”的选择。哇,这在很多层面上都是错误的
zb226

41

对于以后阅读此帖子的任何人,您都不需要CD到jar所在的目录。这是您需要做的-

从可运行Maven命令的位置转到项目文件夹(在此文件夹中执行ls -ltr时,您应该看到pom.xml)

做这个 -

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=<Path where the jar is, example downloads>/ojdbc6.jar -DgeneratePom=true

完成此操作后,您可以在pom.xml中添加依赖项,如下所示-

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>

3
请注意:在执行了这些步骤之后,在执行Eclipse之前,我仍然遇到相同的错误Maven > Update Project。然后,一切正常。这一步可能很明显,但是我认为我会添加它。
user12893298320392 2015年

2
...添加到“您好未来的读者文章”中。这无法运行Powershell,但可以正常运行普通的Windows CMD-shell。没有适合您的powershell!
phareim

对于试图在窗户上这样做的人,法雷姆的建议是黄金。通过在命令提示符下键入mvn命令,我在运行Maven 3.3.3的Windows 7上工作。Powershell不断抛出“找不到pom”错误。
Quest Monger 2015年

提到的顺序很重要。我先添加了依赖项,然后运行mvn intsall命令,该错误并没有消失。尝试删除依赖项,保存,然后再次将其添加回并保存。解决所有错误(假设您的项目设置为“自动构建”)
Kailas

24

Raghuram在评论部分为我的原始问题提供了正确的答案。

无论出于什么原因,将“ mvn install”指向物理ojdbc6.jar文件的完整路径对我来说不起作用。(或者在运行命令时我一再地反复弄乱它,但是没有发出错误。)

进入我保留ojdb6.jar的目录并从那里运行命令第一次生效。

如果Raghuram想回答这个问题,我将接受他的回答。感谢大家!


1
感谢@Raghuram和Marvo
蜘蛛侠

7
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

解决Spring Application的ORACLE JAR问题,

Oracle JDBC ojdbc6 Jar作为Maven依赖项

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`

Maven对并非总是容易猜测的版本非常挑剔。不错的收获是版本是11.2.0而不是11.2.0.3
Michael Shopsin

5

首先,您需要从Oracle网站下载特定的jar(ojdbc.jar版本11.2.0.3)

如果将其下载到C:\ filefolder

在cmd提示符下转到该目录并提供以下命令,它将安装依赖项,然后即可构建项目。

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

2

执行后

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

检查您的.m2存储库文件夹(/com/oracle/ojdbc6/11.2.0.3),以查看ojdbc6.jar是否存在。如果没有,请检查$ M2_HOME / conf / settings.xml下的Maven存储库设置


2

下面的配置为我工作。请参阅此链接以获取更多详细信息。

<dependency>
 <groupId>com.oracle.jdbc</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.0.2</version>
</dependency>

自从我问这个问题以来,这是新的。真好!
Marvo

2

由于Oracle是许可产品,因此直接添加maven依赖项存在问题。要添加ojdbc.jar的任何版本,可以执行以下2个步骤。

  1. 运行以下命令以将ojdbc.jar安装到本地Maven存储库中。
/opt/apache-maven/bin/mvn install:install-file
    -Dfile=<path-to-file>/ojdbc7.jar
    -DgroupId=com.oracle
    -DartifactId=ojdbc7
    -Dversion=12.1.0.1.0
    -Dpackaging=jar

这会将依赖项添加到本地存储库中。

  1. 现在,在pom文件中添加依赖项
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

1

我按照下面的命令工作:

mvn install:install-file -Dfile=E:\JAVA\Spring\ojdbc14-10.2.0.4.0.jar\ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar

安装后,请检查您的M2_repo上是否已正确安装jar。


1

我尝试使用没有版本标签的依赖项,它对我来说很好用。

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
</dependency>

0

在pom.xml中添加Follow依赖项

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>oracle</artifactId>
    <version>10.2.0.2.0</version>
</dependency>


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.