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

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

当然这不起作用,因为它不在 Maven 使用的中央存储库中。2个问题:

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

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

有帮助吗?

解决方案

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

不幸的是,由于二进制许可证,没有包含 Oracle 驱动程序 JAR 的公共存储库。许多依赖项都会发生这种情况,但这不是 Maven 的错。如果您碰巧发现包含该 JAR 的公共存储库,您可以确定这是非法的。

我如何添加它以便 Maven 能够使用它?

一些由于许可证原因而无法添加的 JAR 有一个 聚甲醛 条目在 Maven 中央仓库. 。看看吧,它包含了供应商首选的 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 存储库 本指南 将 JAR 上传到那里可能会有所帮助。

其他提示

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

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

更新:当我运行 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>

下载 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 存储库中。

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>

尝试使用:

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

Oracle JDBC 驱动程序现已在 Oracle Maven 存储库(不在 Central)中提供。

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

Oracle Maven 存储库需要用户注册。说明可以在以下位置找到:

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

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

作为 大卫·S 已评论我在回答时引用的行不再存在于我链接的当前(在我现在撰写时)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 能够使用它?

为了使上述依赖有效,我同意 维克多·雨果 谁建议你 这里 手动将 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 许可协议.

而且我认为你 应避免在公司存储库管理器中安装 JDBC jar (例如 人工工厂 或者 关系)作为单个工件,因为如果安装了它,它仍然会单独分发,即使仅分发给组织中的人员,这代表了 违反 OTN 许可协议.

您可以使用 关系 管理 3rd 方依赖项以及标准 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>

请注意,我定义 http://download.java.net/maven/2/http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependency/maven2/[组织]/[模块]/[修订]/[工件]-[修订].[扩展] 作为我的 ivy 设置上的外部 maven2 存储库。

某些 Oracle 产品支持将 Maven 工件发布到本地存储库。这些产品有一个plugin/maven 目录,其中包含在哪里可以找到这些工件以及在哪里存储它们的描述。Oracle 有一个插件可以实际执行上传操作。

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

WLS 是可以通过这种方式提供 OJDBC 的产品之一,但它使用了相当奇怪的坐标:

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

我在 LGPLv2 下发布开源代码,甚至在与 Oracle 进行多次电子邮件对话后,他们仍不清楚我是否可以在我的发行版中发布他们的二进制 JDBC 驱动程序。该问题与我的许可证是否与他们的 OTN 条款兼容有关,因此他们建议不允许我运送驱动程序。大概与这部分有关

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

因此,即使您设法在专有/本地 Maven 存储库中合法发布驱动程序,您对该工件的操作仍然受到限制。即使我以二进制形式连同完整的 OTN 许可证文件一起提供他们的驱动程序,我仍然无法使用它,并且必须强制我的用户手动下载 Oracle 驱动程序并放入我的库路径,然后才能使用我的软件,这似乎很荒谬。

有一个 repo 提供了该 jar。在 SBT 中添加一个与此类似的解析器:“Oracle 驱动程序存储库”位于“http://dist.codehaus.org/mule/dependency/maven2"

和一个依赖项:“oracle”%“ojdbc14”%“10.2.0.2”

你可以用maven做同样的事情。pom.xml 和 jar 可用(http://dist.codehaus.org/mule/dependency/maven2/oracle/ojdbc14/10.2.0.2/).

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

您可以找到一个 Github 简单示例项目,用于在 Maven 项目上使用 Oracle JDBC 驱动程序 这里.

您可以找到持续集成的所有说明 + 示例并在 Travis-CI 上运行。

演示版

对于依赖

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

尝试

<repository>
    <id>mvnrepository</id>
    <url>http://nexus.saas.hand-china.com/content/repositories/rdc</url>
</repository>

解决了

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

需要启用此存储库,以查找Oracle 10.0.3.0依赖项(此设置需要在buildConfig.groovy Grails.project.project.depertency.resolver.resolver =“ ivy” // Ivy中完成。

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

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

这应该可以解决您找不到 Grails 应用程序的 Oracle 驱动程序的问题


许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top