我想将oracle jdbc驱动程序添加到我的项目中作为依赖项(运行时范围) - ojdbc14 . 在MVNrepository站点中,放入POM的依赖关系是:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
当然这不起作用,因为它不在maven使用的中央存储库中 . 2个问题:
-
如何找到包含此工件的存储库(如果有)?
-
如何添加它以便Maven使用它?
16 回答
您可以使用Nexus来管理第三方依赖项以及标准maven存储库中的依赖项 .
解决了
需要启用此存储库以查找Oracle 10.0.3.0依赖项(此设置需要在Buildconfig.groovy grails.project.dependency.resolver =“ivy”//或常 Spring 藤中完成
还可以使用以下设置进行编译时Oracle驱动程序下载
运行时“com.oracle:ojdbc:10.2.0.3.0”
这应该可以解决您没有为grails应用程序找到Oracle驱动程序的问题
到目前为止,它不可能使用maven存储库 . 我使用常 Spring 藤作为依赖管理工具,但也使用maven2的ibiblio存储库 . 这适用于常 Spring 藤:
Maven2的依赖可能是这样的:
请注意,我在我的常 Spring 藤设置中将http://download.java.net/maven/2/和http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]定义为外部maven2 repos .
大家好消息!最后我们可以使用Oracle的官方回购:https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
无论出于何种原因,我都无法获得上述任何解决方案 . (仍然不能 . )
我所做的是将jar包含在我的项目中(blech),然后为它创建一个“系统”依赖项,指示jar的路径 . 它可能不是正确的方法,但它确实有效 . 并且它消除了团队中其他开发人员(或设置构建服务器的人)将jar放入其本地存储库的需要 .
UPDATE :当我运行Hibernate Tools时,此解决方案适用于我 . 但是,它似乎不适用于构建WAR文件 . 它不包含目标WAR文件中的ojdbc6.jar文件 .
1)在项目的根目录中创建一个名为“lib”的目录 .
2)复制ojdbc6.jar文件(无论调用jar . )
3)创建一个看起来像这样的依赖:
丑陋,但对我有用 .
要将文件包含在war文件中,请将以下内容添加到您的pom中
您可以在Maven Project here上找到一个使用Oracle JDBC驱动程序的Github简单示例项目 .
您可以找到所有解释,以便持续集成样本并在Travis-CI上运行 .
DEMO
1.如何找到包含此工件的存储库(如果有)?
所有Oracle Database JDBC Drivers都在OTN License Agreement下分配 .
如果您阅读OTN许可协议,您会发现此许可条款:
这就是为什么你不能在任何公共Maven资源库中找到驱动程序的jar,因为它将单独分发,如果它发生了,那将是一个许可证违规 .
添加依赖项:
(或任何更高版本)使Maven仅下载
ojdbc14-10.2.0.3.0.pom
,在那个pom中你可以阅读:通知您有关OTN许可证的信息 .
2.如何添加它以便Maven使用它?
为了使上述依赖性工作,我同意victor hugo谁建议您通过运行以下方式将jar手动安装到本地Maven存储库(
.m2
目录)中:但是我想补充说 the license term above 找不到JDBC jar,但它限制了你安装它的位置!
实际上 your local Maven repository must be private and not shared 因为如果它被共享,它将是一种独立分发jar的分发,即使是一小群人进入你的局域网,这也代表了OTN许可协议违规 .
此外,我认为你 should avoid installing the JDBC jar in your corporation repository manager (例如Artifactory或Nexus)作为单个工件,因为如果它已安装,它仍将单独分发,即使只对您组织中的人员进行分发,这也代表违反OTN许可协议 .
如果您使用的是Netbeans,请转到依赖项并手动安装工件 . 找到下载的.jar文件及其完成情况 . 干净的构建将解决任何问题 .
Oracle JDBC驱动程序现在可在Oracle Maven存储库(不在Central中)中使用 .
Oracle Maven Repository需要用户注册 . 说明可在以下位置找到:
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
有一个回购提供jar . 在SBT中添加一个类似于此的解析器:"oracle driver repo" at“http://dist.codehaus.org/mule/dependencies/maven2”
和依赖:“oracle”%“ojdbc14”%“10.2.0.2”
你可以用maven做同样的事情 . pom.xml和jar可用(http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/) .
Oracle现在在maven.oracle.com上公开了一个maven存储库 . 但是你需要进行身份验证 .
见https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle
根据博客文章中的评论,ojdbc驱动程序应该是可从以下坐标获得:
某些Oracle产品支持将maven工件发布到本地存储库 . 这些产品有一个插件/ maven目录,其中包含描述在哪里找到这些工件以及存储它们的位置 . 有一个来自Oracle的插件,它实际上会进行上传 .
见:http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm
可能以这种方式运送OJDBC的产品之一是WLS,它使用了相当奇怪的坐标:
我在LGPLv2下发布opensource,甚至在与Oracle进行了几次电子邮件对话之后,他们还不清楚我是否被允许用我的发行版发送他们的二进制JDBC驱动程序 . 该问题与我的许可证是否与他们的OTN条款兼容有关,因此他们建议我不允许运送该驱动程序 . 大概与这部分有关
因此,即使您设法在您的独占/本地maven存储库中合法地发布驱动程序,仍然限制您允许对该工件执行的操作 . 似乎很荒谬,即使我以二进制形式发送他们的驱动程序以及完整的OTN许可证文件,我仍然无法使用它,并且必须强制我的用户手动下载Oracle驱动程序并放入我的库路径才能使用我的软件 .
试试:
下载jar并将其放在项目
src/lib
中 . 现在您可以使用maven安装程序插件 .现在您只需要执行
mvn clean
一次,并且oracle lib安装在您的本地maven存储库中 .如何找到包含此工件的存储库(如果有)?
不幸的是,由于二进制许可证,Oracle Driver JAR没有公共存储库 . 这种情况发生在许多依赖项中,但不是Maven的错 . 如果您碰巧找到包含JAR的公共存储库,您可以确定它是非法的 .
如何添加它以便Maven使用它?
由于许可证原因而无法添加的某些JAR在Maven Central repo中有一个pom条目 . 只需查看它,它包含供应商首选的Maven信息:
...以及下载文件的URL,在本例中为http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .
下载JAR后,只需将其添加到您的计算机存储库中(注意我从POM中提取了groupId,artifactId和版本):
生成POM的最后一个参数将使您免于pom.xml警告
如果您的团队有一个本地Maven存储库this guide可能有助于在那里上传JAR .