MavenリポジトリーでOracle JDBCドライバーを見つける


292

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で使用できるようにするにはどうすればよいですか?



1
:公共のMavenリポジトリにojdbc6 stackoverflow.com/questions/9898499/...
ヴァジム・

回答:


412

このアーティファクトを含むリポジトリ(ある場合)を見つけるにはどうすればよいですか?

残念ながら、バイナリライセンスのため、Oracle Driver 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をそこにアップロードするのに役立ちます。


@Victor-これらの行はどこにありますか?settings.xmlで?
デジェル

1
これらは、settings.xmlの行ではなくコマンドです
。JAR​​を取得

15
OJDBC6の場合:1. mvn install:install-file -DgroupId = com.oracle -DartifactId = ojdbc6 -Dversion = 11.2.0.3 -Dpackaging = jar -Dfile = ojdbc6.jar -DgeneratePom = true 2.これをpom.xmlに追加します。 <dependency> <groupId> com.oracle </ groupId> <artifactId> ojdbc6 </ artifactId> <version> 11.2.0.3 </ version> </ dependency>
oskarae

11
オラクルが醜いのでなぜそれが持っているすべての公の判断を気にしないのか迷っています。自分たちの無料のライブラリが公開されているような小さなことでも悪い。
Askar Kalykov 14

7
@AmanicA stackoverflow.com/a/27943380/7677308によると、Oracleはこのようなリポジトリをホストしています
SilverNak

51

どんな理由であれ、私は上記の解決策のどれも機能させることができませんでした。(まだできません。)

代わりに、プロジェクト(ブリーチ)にjarを含め、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>

8
ネクサスを設定する必要がないため、このソリューションが実際に好きです。プロジェクトには通常、このようなjarが1つまたは2つしかありません。また、ローカルの.m2環境を更新する必要がないため、プロジェクトの他の開発者のセットアップが簡単になります。 。(オラクルはこのための最有力候補です)。また、ソースリポジトリを新しいoracle jarで更新すると、すべての開発者が次のプルでそれを取得します。
Qボイラー

jarファイルをWARファイルに追加する方法に関する情報を追加
ojblass


1
@Marvo、私は多くの解決策を試しました、そしてこれは最高のものです、本当にありがとう
Mahmoud Saleh

35

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

アップデート2019-10-03

Spring BootがMaven Centralの Oracle JDBCドライバーを使用していることに気づきました。

<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の回答を参照してください。アンソニーに感謝します。

JDK6、JDK7、およびJDK8と互換性のあるOr​​acle JDBCドライバー

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc6</artifactId>
  <version>11.2.0.4</version>
</dependency>

JDK8、JDK9、およびJDK11と互換性のあるOr​​acle JDBCドライバー

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

JDK10およびJDK11と互換性のあるOr​​acle JDBCドライバー

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

これは推奨される方法です。
Ashish

30

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で、1回実行するだけで、Oracle libがローカルのMavenリポジトリにインストールされます。


9
非常に便利な代替手段!
Rakesh Waghela 14

22

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>

7
これは機能します。それは少し面倒です。適切なアーティファクトを取得していることを確認し、Oracleアカウントを作成し、settings.xmlとpom.xmlファイルにいくつかの項目を追加し、そのアカウントのユーザー名とパスワードをsettings.xmlに追加する必要があります。これはまだPITAであるため、Oracleはライセンスを修正する必要があります。
ggb667

12
Mavenアーティファクトを取得するには認証が必要です。
ラファエルソアレス-tuelho

3
何らかの理由でojdbc6を使用する必要がある場合(つまり、Java 6でスタックしている場合)、artifactIdをojdbc6 変更し、バージョンを12.1.2-0-0に変更します。
dcsohl 2015年

私はJava 6の11gリリース(11.2.0.4)を見つけようとしています...誰かが見つかりましたか?
jpfreire 2016年

2
更新:Nailed it:古いjdbcドライバーの場合、groupIdも変更する必要があります:mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get -DrepoUrl = maven.oracle.com -Dartifact = com.oracle.jdbc :ojdbc6:11.2.0.4
jpfreire

17

試してみてください:

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

14
ただし、これはOracleライセンスの違反です。
ベンL.15年

3
ライセンスの暴力が動作します。私はそれを教育目的で使用します(製品ではありません)。12cドライバー<dependency> <groupId> com.oracle </ groupId> <artifactId> ojdbc7 </ artifactId> <version> 12.1.0.2 </ version> </ dependency>も保持しています
Svetlin Nakov

4
ライセンスの問題に加えて、不明なリポジトリをpomに追加しないでください。これはセキュリティリスクをもたらし、ビルドを脅かす可能性もあります。末日聖徒イエス・キリスト教会のリポジトリにどれだけの信頼を置くことができますか?リポジトリが信頼性があり、安全で安全であること、およびリポジトリが混乱しないことをどのように保証しますか?ハッキングされてojdbcドライバーの悪意のあるバージョンやその他の依存関係が公開された場合はどうなりますか?
Didier L

14

1.このアーティファクトを含むリポジトリ(ある場合)を見つけるにはどうすればよいですか?

以下のようヴィッツは、私は答えを引用時の行をコメントしている私はリンク(私が今書いている時点で)現在のOTNライセンス契約の合意にはもはや存在しません。10.2.0.3.0などのアーティファクトの古いバージョンについてのみ、この回答を検討してください。

すべてのOracle Database JDBCドライバは、OTNライセンス契約に基づいて配布されています。

OTNライセンス契約を読むと、このライセンス条項が見つかります。

次のことは禁止されています:
...-
アプリケーションを伴わない限り、プログラムを配布します。
...

そのため、ドライバーのjarがパブリックのMavenリポジトリーで見つからないのは、それが単独で配布されるためであり、発生した場合はライセンス違反になるためです。

依存関係を追加する:

<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で使用できるようにするには、どうすれば追加できますか?

上記の依存関係を作るために私は同意する作品ヴィクトル・ユゴーあなたを示唆してここに手動でローカルのMavenリポジトリ(にjarファイルをインストールするために.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を企業のリポジトリマネージャーArtifactoryNexusなど)に単一のアーティファクトとしてインストールすることは避けるべきだと思います。インストールした場合、組織内のユーザーにのみ配布される場合でも、JDBC jarは引き続き配布されるためです。OTNライセンス契約違反


1
特に、引用した行は、リンクした契約にはもう存在しません。残りの最も近い行は、「関連製品と相互運用することを目的とするアプリケーションの一部として含まれている場合、変更されていないプログラムおよびプログラムドキュメントをアプリケーションにコピーおよび配布する非独占的かつ譲渡不可能な権利を付与することを条件としています。あなたが見ることができるようになる、「あなたのエンドユーザープログラムを使用するための追加料金を請求していない以上に関係しているの支払い、それは再配分の具体的であるより。
DavidS

13

Nexusを使用して、サードパーティの依存関係と標準のMavenリポジトリの依存関係を管理できます。


4
この場合、ネクサスはどのように役立ちますか?アーティファクトはどこからダウンロードしますか?
ziggy

4
答えは不完全ですが、@ Michael Munseyがダウンロードする内部/企業リポジトリを作成するように言っていると思います
ランドルフ、

はい。Nexusを設定してから、jarを手動でダウンロードしてNexusに配置します。これにより、Mavenの連続ビルドでNexusインスタンスからプルできるようになります。
Michael Munsey 2013

1
@MichaelMunsey一般的に言えば、ArtifactoryNexusのようなリポジトリマネージャーを提案することは良い答えですが、Oracle JDBCデータベースドライバーの特定のケースでは、それがうまく機能しても、残念ながら、このライセンス期間違反によるトラブル。
taringamberini 2014年

6

これまでは、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/ [organization] / [module] / [を定義していることに注意してください。 revision] / [artifact]-[revision]。[ext]は、私のivy設定の外部maven2リポジトリとして使用します。


1
これは素晴らしい答えです- これを機能させるには、pom.xmlにミラーを追加するだけです:mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2
Grouchal 2012年

7
うまくいくかもしれませんが、合法ですか?ここで他の回答の1つで説明されているように、Oracleではドライバーを誰もが配布することを許可しておらず、Mavenリポジトリーを提供していません。このソリューションを使用する場合、ドライバーが予想外のときにリポジトリから削除されることがあります。
LS

1
@Grouchalこの答えは物事を機能させますが、残念ながら、このライセンス期間違反によるトラブルにさらされます。
taringamberini 2014年

@Grouchal ...もありませhttp://maven.ibiblio.org/maven/oraclehttp://maven.ibiblio.org/maven/com.oracle
david

6

オラクルは本日(2020年2月27日)に、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>

4

Oracle JDBCドライバは、で利用できるMavenの中央。ここにリンクがあります:

Oracle JDBCドライバー-Maven Central

Maven CentralでのOracle JDBCドライバーの可用性を発表したOracle開発者の記事:

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>

3

皆さん良いニュースです!最後に、Oracleの公式リポジトリを使用できます。https//blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides


4
朗報ですが、セキュリティ設定が複雑すぎます。私たちが1999年に行ったように「LIB」フォルダ内のJARをダウンロードすることが容易である
Svetlin Nakov

できます!セキュリティの設定はそれほど複雑ではなく、十分に文書化されているため、一度だけ実行する必要があります。(暗号化された)パスワードをどこかにハードコードしなければならないという事実は確かに苦痛ですが、Oracleが「パブリック」リポジトリへのアクセスを「保護」するという決定にも疑問を投げかけます。開発者の観点からはまったく意味がありません。
Pierluigi Vernetto 2017年

2

一部のOracle製品は、ローカルリポジトリへのMavenアーティファクトの公開をサポートしています。製品にはplugin / mavenディレクトリがあり、そこにはそれらのアーティファクトを見つける場所とそれらを保存する場所の説明が含まれています。実際にアップロードを実行するOracleのプラグインがあります。

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

この方法でOJDBCを出荷できる製品の1つはWLSですが、非常に奇妙な座標を使用します。

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

...とレポをmanwhileも公共入手可能です:blogs.oracle.com/WebLogicServer/entry/...は
eckes

1

私はLGPLv2でオープンソースを出荷しており、Oracleとの電子メールによる会話の後でさえ、私のディストリビューションにバイナリJDBCドライバーを出荷することが許可されているかどうかは不明でした。私のライセンスが彼らのOTN条件と互換性があるかどうかに関連する問題は、ドライバーの発送を許可されていないことを示唆していたからです。おそらくこの部分に関連しています

(b)お客様が開発したアプリケーションを含むプログラムを顧客に配布するために、そのような各ライセンシーが本契約の条件と一致するライセンス条件に同意する場合

したがって、ドライバーを排他的/ローカルのMavenリポジトリーに合法的に公開したとしても、そのアーティファクトを使用して何が許可されるかについては、依然として制限があります。ドライバーを完全なOTNライセンスファイルと一緒にバイナリ形式で出荷したとしても、それを使用することはできません。ユーザーがソフトウェアを使用する前に、手動でOracleドライバーをダウンロードしてライブラリパスにドロップする必要があります。


0

jarを提供するリポジトリが1つあります。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/)。


このpom http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pomにはライセンス定義がないため、アップロードされたとは思わないので注意してくださいアーティファクトの所有者による。この回答により問題は解決しますが、残念ながら、このライセンス期間違反によるトラブルにさらされます。
taringamberini 2014年

ダウンボター、あなたは私に怒っているのか、それともオラクルに怒っているのか?:)他のユーザーがこの回答の問題点を理解できるように、あなたの反対票を説明してください。
yǝsʞǝla

0

Netbeansを使用している場合は、依存関係に移動し、アーティファクトを手動でインストールします。ダウンロードした.jarファイルを見つけて、完了します。クリーンビルドは問題を解決します。


0

ここで、Mavenプロジェクト Oracle JDBCドライバーを使用するためのGithubシンプルなサンプルプロジェクトを見つけることができます。

継続的インテグレーション+サンプルのすべての説明を見つけて、Travis-CIで実行できます。

デモ


1
ソリューションへのリンクを歓迎しますが、それがなくても回答が役立つことを確認してください。リンクの周りにコンテキストを追加して、他のユーザーがそれが何であるか、なぜそこにあるのかを理解し、ページの最も関連性の高い部分を引用してくださいターゲットページが利用できない場合にリンクし直します。リンクに過ぎない回答は削除される場合があります。
Samuel Liew

1
あなたのプロフィールはあなたがあなたがリンクしたウェブサイトに関連付けられていることを示しています。自分のものではないことをアフィリエイトしているもの(製品やWebサイトなど)にリンクすることは、Stack Exchange / Stack Overflowではスパムと見なされます。参照:「良い」自己宣伝を意味するものは何ですか?自己宣伝に関するいくつかのヒントやアドバイススタックオーバーフローのための「スパム」の正確な定義は何ですか?、そして何かがスパムになるもの
Samuel Liew

0

依存関係について

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

0

私の場合、このバージョンの依存関係(10.2.0.4)の下にこれを追加した後、私にとってはうまくいきます。このバージョン10.2.0.3.0を追加した後、.jarファイルがリポジトリパスで使用できないため、機能しません。

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

0

以下をお試しください:

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.3.0.0</version>
</dependency>


-3

解決した

  • エラーを解決するには、次の設定を行ってください

このリポジトリは、Oracle 10.0.3.0の依存関係を見つけるために有効にする必要があります(この設定は、Buildconfig.groovy grails.project.dependency.resolver = "ivy" //またはivyで行う必要があります

また、コンパイル時のOracleドライバーのダウンロードには次の設定を使用します。

ランタイム「com.oracle:ojdbc:10.2.0.3.0」

これで、Grailsアプリケーション用のOracleドライバーが見つからないという問題が解決されます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.