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

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

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

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


当前回答

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

不幸的是,由于二进制许可证,Oracle驱动JAR没有公共存储库。这发生在许多依赖关系中,但不是Maven的错。如果您碰巧发现一个包含JAR的公共存储库,您可以确定它是非法的。

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

由于许可证原因而不能添加的一些jar在Maven Central回购中有一个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和version):

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存储库,本指南可能有助于在那里上传JAR。

其他回答

有一个repo提供了这个jar。在SBT中添加一个类似这样的解析器: “oracle driver repo”在“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驱动JAR没有公共存储库。这发生在许多依赖关系中,但不是Maven的错。如果您碰巧发现一个包含JAR的公共存储库,您可以确定它是非法的。

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

由于许可证原因而不能添加的一些jar在Maven Central回购中有一个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和version):

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存储库,本指南可能有助于在那里上传JAR。

截至今天(2020年2月27日),Oracle宣布它已经在Maven Central上发布了从版本11.2.0.4(例如ojdbc6)到19.3.0(例如ojdbc10)的所有JDBC客户端库,组id为com.oracle.database:

例子:

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc10</artifactId>
  <version>19.3.0.0</version>
</dependency>

无论出于何种原因,我都无法让上述任何解决方案发挥作用。(仍然不能)。

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

更新:当我运行Hibernate工具时,此解决方案适用于我。但是,它似乎不能用于构建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>

Oracle JDBC驱动程序现在在Maven Central中可用。 链接如下:

Oracle JDBC驱动程序- Maven中心

Oracle开发人员的文章宣布了Oracle JDBC驱动程序在Maven Central的可用性:

Oracle宣布- Oracle JDBC驱动程序在Maven中心可用

例子:

<!-- https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc10 -->
<dependency>
   <groupId>com.oracle.database.jdbc</groupId>
   <artifactId>ojdbc10</artifactId>
   <version>19.3.0.0</version>
</dependency>