[英]Find Oracle JDBC driver in Maven repository
我想將 oracle jdbc 驅動程序作為依賴項(運行時范圍) - ojdbc14 添加到我的項目中。 在 MVNrepository 站點中,放入 POM 的依賴項是:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
當然這不起作用,因為它不在 maven 使用的中央存儲庫中。 2個問題:
如何找到包含此工件的存儲庫(如果有)?
我如何添加它以便 Maven 將使用它?
如何找到包含此工件的存儲庫(如果有)?
不幸的是,由於二進制許可證,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 和 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 上傳到那里。
無論出於何種原因,我都無法使上述任何解決方案起作用。 (還是不能。)
我所做的是將 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>
Oracle JDBC 驅動程序現在在 Oracle Maven Repository 中可用(不在 Central 中)。
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>
Oracle Maven Repository 需要用戶注冊。 說明可以在以下位置找到:
更新 2019-10-03
我注意到 Spring Boot 現在正在使用來自Maven Central的 Oracle JDBC Driver。
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.3.0.0</version>
</dependency>
對於 Gradle 用戶,請使用:
implementation 'com.oracle.ojdbc:ojdbc10:19.3.0.0'
無需用戶注冊。
更新 2020-03-02
Oracle 現在正在 com.oracle.database 組 ID 下發布驅動程序。 有關更多信息,請參閱 Anthony Accioly 的回答。 謝謝安東尼。
Oracle JDBC Driver 兼容 JDK6、JDK7 和 JDK8
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
Oracle JDBC Driver 兼容 JDK8、JDK9 和 JDK11
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
兼容 JDK10 和 JDK11 的 Oracle JDBC 驅動程序
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.3.0.0</version>
</dependency>
下載 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 庫安裝在您的本地 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>
正如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 許可證的信息。
為了使上述依賴項起作用,我同意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 許可協議。
您可以使用Nexus來管理 3rd 方依賴項以及標准 maven 存儲庫中的依賴項。
截至今天(2020 年 2 月 27 日),Oracle 宣布已在 Maven Central 上以組 ID com.oracle.database發布了從版本 11.2.0.4(例如 ojdbc6)到 19.3.0(例如 ojdbc10)的所有 JDBC 客戶端庫:
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.3.0.0</version>
</dependency>
Oracle JDBC 驅動程序現在在Maven Central 中可用。 鏈接在這里:
Oracle 開發人員文章宣布在 Maven Central 中提供 Oracle JDBC 驅動程序:
Oracle 宣布 - Maven Central 中提供 Oracle JDBC 驅動程序
例子:
<!-- 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>
到目前為止,無法使用 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/dependencies/maven2/[organisation]/[module]/[修訂版]/[工件]-[修訂版].[ext]作為我常春藤設置的外部 maven2 存儲庫。
我想將oracle jdbc驅動程序作為依賴項(運行時范圍)添加到我的項目中-ojdbc14。 在MVNrepository站點中,放入POM的依賴項為:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
當然,這是行不通的,因為它不在maven使用的中央存儲庫中。 2個問題:
如何找到包含此工件的存儲庫(如果有)?
如何添加它,以便Maven使用它?
大家好消息! 最后我們可以使用Oracle的官方repo: https : //blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
我在 LGPLv2 下發布開源,即使在與 Oracle 進行了幾次電子郵件對話之后,他們也不清楚是否允許我在我的發行版中發布他們的二進制 JDBC 驅動程序。 問題與我的許可證是否符合他們的 OTN 條款有關,因此他們建議我不允許運送驅動程序。 大概和這部分有關
(b) 向您的客戶分發帶有您開發的應用程序的程序,前提是每個此類被許可人同意與本協議條款一致的許可條款
因此,即使您設法在您的獨占/本地 Maven 存儲庫中合法地發布驅動程序,您仍然可以對該工件執行的操作受到限制。 即使我將他們的驅動程序與完整的 OTN 許可文件一起以二進制形式發送,我仍然無法使用它,並且必須強制我的用戶手動下載 Oracle 驅動程序並放入我的庫路徑,然后他們才能使用我的軟件,這似乎很荒謬。
在我的情況下,它在添加以下版本依賴項(10.2.0.4)后對我有用。 添加此版本10.2.0.3.0 后,由於 .jar 文件在存儲庫路徑中無效,因此它不起作用。
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4</version>
有一個提供 jar 的 repo。 在 SBT 中添加類似於此的解析器:“ http://dist.codehaus.org/mule/dependencies/maven2 ”中的“oracle driver repo”
和一個依賴項:“oracle”%“ojdbc14”%“10.2.0.2”
你可以用 maven 做同樣的事情。 pom.xml 和 jar 可用( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ )。
如果您使用 Netbeans,請轉到依賴項並手動安裝工件。 找到您下載的 .jar 文件並完成。 干凈的構建將解決任何問題。
您可以在此處找到在 Maven 項目上使用 Oracle JDBC 驅動程序的 Github 簡單示例項目。
您可以找到有關持續集成的所有說明 + 示例並在 Travis-CI 上運行。
pom.xml
<properties>
<oracle.driver.version>12.2.0.1</oracle.driver.version>
</properties>
<repositories>
<repository>
<id>maven.oracle.com</id>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>https://maven.oracle.com</url>
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven.oracle.com</id>
<url>https://maven.oracle.com</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>${oracle.driver.version}</version>
</dependency>
</dependencies>
mvnsettings.xml
<settings>
<servers>
<server>
<id>maven.oracle.com</id>
<username>${OTN_USERNAME}</username>
<password>${OTN_PASSWORD}</password>
<configuration>
<basicAuthScope>
<host>ANY</host>
<port>ANY</port>
<realm>OAM 11g</realm>
</basicAuthScope>
<httpConfiguration>
<all>
<params>
<property>
<name>http.protocol.allow-circular-redirects</name>
<value>%b,true</value>
</property>
</params>
</all>
</httpConfiguration>
</configuration>
</server>
</servers>
</settings>
如何在本地環境中使用
通過您在 test/mvnsettings.xml 文件中的 Oracle 登錄名更改${OTN_USERNAME}
在 test/mvnsettings.xml 文件中通過您的 Oracle 密碼更改${OTN_PASSWORD}
mvn clean install --settings test/mvnsettings.xml
對於依賴
<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>
請嘗試以下:
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
這對我來說就像魅力一樣。 我經歷了多種方式,但這對我有幫助。 確保您遵循每個步驟並完全相同地命名 XML 文件。
這個過程有點乏味,但它確實有效。
解決了
需要啟用此存儲庫以查找 Oracle 10.0.3.0 依賴項(此設置需要在 Buildconfig.groovy grails.project.dependency.resolver = "ivy" // 或 ivy
還使用以下設置進行編譯時 Oracle 驅動程序下載
運行時“com.oracle:ojdbc:10.2.0.3.0”
這應該可以解決您找不到 grails 應用程序的 Oracle 驅動程序的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.