我想添加oracle jdbc驱动程序到我的项目作为依赖(运行时范围)- ojdbc14。 在MVNrepository站点中,要放在POM中的依赖项是:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

当然,这是行不通的,因为它不在maven使用的中央存储库中。 两个问题:

我如何找到包含此工件的存储库(如果有的话)? 如何添加它以便Maven使用它?


当前回答

到目前为止,还不能使用maven存储库。我使用ivy作为依赖管理工具,但也使用了maven2的ibiblio存储库。这招对艾薇很管用

<dependency org="oracle" name="ojdbc14" rev="10.2.0.2" conf="*->default"/>

Maven2的依赖关系可能是这样的:

<dependency> 
    <groupId>oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>10.2.0.2</version> 
</dependency>

注意,我在ivy设置中定义了http://download.java.net/maven/2/和http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]作为maven2的外部回购。

其他回答

如果你正在使用Netbeans,转到Dependencies并手动安装artifact。找到你下载的.jar文件就完成了。清洁构建将解决任何问题。

Oracle现在在maven.oracle.com上公开maven存储库 但是,您需要进行身份验证。

参见https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle

根据博客文章中的评论,ojdbc驱动程序应该在以下坐标处可用:

<groupId>com.oracle.weblogic</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.3-0-0</version>
 <packaging>jar</packaging>

1. 我如何找到包含此工件的存储库(如果有的话)?

正如DavidS所评论的那样,我在回答时引用的那行已经不再出现在我所链接的当前(在我现在写作的时候)OTN许可协议中。这个答案只适用于工件的旧版本,比如10.2.0.3.0等等。

所有Oracle数据库JDBC驱动程序都在OTN许可协议下分发。

如果您阅读OTN许可协议,您会发现以下许可条款:

你不可以: ... -除非你的应用程序附有该等程序,否则不得分发该等程序; ...

所以这就是为什么你不能在任何公共Maven资源库中找到驱动程序的jar,因为它将单独发布,如果发生这种情况,它将违反许可证。

添加依赖项:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

(或任何更高版本)使Maven下载ojdbc14-10.2.0.3.0。仅限Pom,在Pom中你可以读到:

...
<licenses>
    <license>
        <name>Oracle Technology Network Development and Distribution License Terms</name>
        <url>http://www.oracle.com/technology/software/htdocs/distlic.html</url>
    </license>
</licenses>
...

通知您OTN许可证。

2. 如何添加它以便Maven使用它?

为了使上面的依赖能够工作,我同意victor hugo的建议,他建议你手动将jar安装到你的本地Maven存储库(.m2目录),通过运行:

mvn install:install-file -Dfile={Path_to_your_ojdbc.jar} -DgroupId=com.oracle 
-DartifactId=ojdbc -Dversion=10.2.0.3.0 -Dpackaging=jar

但我想补充的是,上面的许可条款不仅限制了您无法找到JDBC jar的地方,而且还限制了您安装它的地方!

事实上,您的本地Maven存储库必须是私有的,而不是共享的,因为如果它是共享的,它将是一种单独分发jar的分发,即使是向您的局域网中的一小群人分发,这代表了OTN许可协议的违反。

此外,我认为您应该避免在您的公司存储库管理器(如Artifactory或Nexus)中作为单个工件安装JDBC jar,因为如果安装了它,它仍然会单独分发,即使只分发给您组织中的人员,这代表了OTN许可协议的违反。

解决了

请执行以下设置以解决错误

需要启用这个存储库来查找Oracle 10.0.3.0依赖项(这个设置需要在Buildconfig.groovy中完成 Grails.project.dependency.resolver = "ivy" //或ivy

在编译时下载Oracle驱动程序时也使用以下设置

runtime com.oracle: ojdbc 10.2.0.3.0 "

这将解决您找不到grails应用程序的Oracle驱动程序的问题


您可以使用Nexus来管理第三方依赖关系以及标准maven存储库中的依赖关系。