首页 文章

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

提问于
浏览
259

我想将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 回答

  • 22

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

  • 0

    解决了

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

    需要启用此存储库以查找Oracle 10.0.3.0依赖项(此设置需要在Buildconfig.groovy grails.project.dependency.resolver =“ivy”//或常 Spring 藤中完成

    还可以使用以下设置进行编译时Oracle驱动程序下载

    运行时“com.oracle:ojdbc:10.2.0.3.0”

    这应该可以解决您没有为grails应用程序找到Oracle驱动程序的问题


  • 2

    到目前为止,它不可能使用maven存储库 . 我使用常 Spring 藤作为依赖管理工具,但也使用maven2的ibiblio存储库 . 这适用于常 Spring 藤:

    <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>
    

    请注意,我在我的常 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 .

  • 15
  • 0

    无论出于何种原因,我都无法获得上述任何解决方案 . (仍然不能 . )

    我所做的是将jar包含在我的项目中(blech),然后为它创建一个“系统”依赖项,指示jar的路径 . 它可能不是正确的方法,但它确实有效 . 并且它消除了团队中其他开发人员(或设置构建服务器的人)将jar放入其本地存储库的需要 .

    UPDATE :当我运行Hibernate Tools时,此解决方案适用于我 . 但是,它似乎不适用于构建WAR文件 . 它不包含目标WAR文件中的ojdbc6.jar文件 .

    1)在项目的根目录中创建一个名为“lib”的目录 .

    2)复制ojdbc6.jar文件(无论调用jar . )

    3)创建一个看起来像这样的依赖:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc</artifactId>
        <version>14</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/ojdbc6.jar</systemPath> <!-- must match file name -->
    </dependency>
    

    丑陋,但对我有用 .

    要将文件包含在war文件中,请将以下内容添加到您的pom中

    <build>
        <finalName>MyAppName</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>${basedir}/src/main/java</directory>
                            <targetPath>WEB-INF/classes</targetPath>
                            <includes>
                                <include>**/*.properties</include>
                                <include>**/*.xml</include>
                                <include>**/*.css</include>
                                <include>**/*.html</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>${basedir}/lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>**/*.jar</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
    
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  • 1

    您可以在Maven Project here上找到一个使用Oracle JDBC驱动程序的Github简单示例项目 .

    您可以找到所有解释,以便持续集成样本并在Travis-CI上运行 .

    DEMO

  • 12

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

    所有Oracle Database JDBC Drivers都在OTN License Agreement下分配 .

    如果您阅读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
    

    但是我想补充说 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 (例如ArtifactoryNexus)作为单个工件,因为如果它已安装,它仍将单独分发,即使只对您组织中的人员进行分发,这也代表违反OTN许可协议 .

  • 0

    如果您使用的是Netbeans,请转到依赖项并手动安装工件 . 找到下载的.jar文件及其完成情况 . 干净的构建将解决任何问题 .

  • 27

    Oracle JDBC驱动程序现在可在Oracle Maven存储库(不在Central中)中使用 .

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

    Oracle Maven Repository需要用户注册 . 说明可在以下位置找到:

    https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides

  • -3

    有一个回购提供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/) .

  • 6

    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>
    
  • 47

    某些Oracle产品支持将maven工件发布到本地存储库 . 这些产品有一个插件/ maven目录,其中包含描述在哪里找到这些工件以及存储它们的位置 . 有一个来自Oracle的插件,它实际上会进行上传 .

    见:http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm

    可能以这种方式运送OJDBC的产品之一是WLS,它使用了相当奇怪的坐标:

    <groupId>com.oracle.weblogic</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>12.1.2-0-0</version>
    
  • 16

    我在LGPLv2下发布opensource,甚至在与Oracle进行了几次电子邮件对话之后,他们还不清楚我是否被允许用我的发行版发送他们的二进制JDBC驱动程序 . 该问题与我的许可证是否与他们的OTN条款兼容有关,因此他们建议我不允许运送该驱动程序 . 大概与这部分有关

    (b)将您开发的应用程序分发给您的客户,前提是每个此类被许可人同意许可条款与本协议的条款一致

    因此,即使您设法在您的独占/本地maven存储库中合法地发布驱动程序,仍然限制您允许对该工件执行的操作 . 似乎很荒谬,即使我以二进制形式发送他们的驱动程序以及完整的OTN许可证文件,我仍然无法使用它,并且必须强制我的用户手动下载Oracle驱动程序并放入我的库路径才能使用我的软件 .

  • 3

    试试:

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

    下载jar并将其放在项目 src/lib 中 . 现在您可以使用maven安装程序插件 .

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.3.1</version>
        <executions>
            <execution>
                <id>install-oracle-jdbc</id>
                <goals>
                    <goal>install-file</goal>
                </goals>
                <phase>clean</phase>
                <configuration>
                    <groupId>com.oracle</groupId>
                    <artifactId>ojdbc6</artifactId>
                    <version>11.2.0</version>
                    <packaging>jar</packaging>
                    <generatePom>true</generatePom>
                    <createChecksum>true</createChecksum>
                    <file>${project.basedir}/src/lib/ojdbc6.jar</file>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    现在您只需要执行 mvn clean 一次,并且oracle lib安装在您的本地maven存储库中 .

  • 14

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

    不幸的是,由于二进制许可证,Oracle Driver JAR没有公共存储库 . 这种情况发生在许多依赖项中,但不是Maven的错 . 如果您碰巧找到包含JAR的公共存储库,您可以确定它是非法的 .

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

    由于许可证原因而无法添加的某些JAR在Maven Central repo中有一个pom条目 . 只需查看它,它包含供应商首选的Maven信息:

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

    ...以及下载文件的URL,在本例中为http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .

    下载JAR后,只需将其添加到您的计算机存储库中(注意我从POM中提取了groupId,artifactId和版本):

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 \
         -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true
    

    生成POM的最后一个参数将使您免于pom.xml警告

    如果您的团队有一个本地Maven存储库this guide可能有助于在那里上传JAR .

相关问题