Ich möchte den Oracle JDBC-Treiber als Abhängigkeit (Laufzeitbereich) zu meinem Projekt hinzufügen - ojdbc14. In der MVNrepository-Site lautet die Abhängigkeit, die in das POM eingefügt werden soll:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
Dies funktioniert natürlich nicht, da es sich nicht im zentralen Repository befindet, das von maven verwendet wird. 2 Fragen:
Wie finde ich ein Repository (falls vorhanden), das dieses Artefakt enthält?
Wie füge ich es hinzu, damit Maven es verwendet?
Antworten:
Wie finde ich ein Repository (falls vorhanden), das dieses Artefakt enthält?
Leider gibt es aufgrund der Binärlizenz kein öffentliches Repository mit der Oracle Driver JAR. Dies geschieht mit vielen Abhängigkeiten, ist aber nicht Mavens Schuld. Wenn Sie zufällig ein öffentliches Repository finden, das die JAR enthält, können Sie sicher sein, dass dies illegal ist.
Wie füge ich es hinzu, damit Maven es verwendet?
Einige JARs, die aus Lizenzgründen nicht hinzugefügt werden können, haben einen POM- Eintrag im Maven Central-Repo . Probieren Sie es einfach aus, es enthält die bevorzugten Maven-Informationen des Anbieters:
... und die URL zum Herunterladen der Datei, in diesem Fall http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .
Sobald Sie die JAR heruntergeladen haben, fügen Sie sie einfach mit Ihrem Computer-Repository hinzu (Hinweis: Ich habe die Gruppen-ID, die Artefakt-ID und die Version aus dem POM abgerufen):
Der letzte Parameter zum Generieren eines POM schützt Sie vor Warnungen von pom.xml
Wenn Ihr Team über ein lokales Maven-Repository verfügt, kann dieses Handbuch hilfreich sein, um die JAR dort hochzuladen.
quelle
Aus irgendeinem Grund konnte ich keine der oben genannten Lösungen zum Laufen bringen. (Kann immer noch nicht.)
Stattdessen habe ich das Glas in mein Projekt aufgenommen (blech) und dann eine "System" -Abhängigkeit dafür erstellt, die den Pfad zum Glas angibt. Es ist wahrscheinlich nicht der richtige Weg, es zu tun, aber es funktioniert. Außerdem müssen die anderen Entwickler im Team (oder der Typ, der den Build-Server einrichtet) die JAR-Datei nicht mehr in ihren lokalen Repositorys ablegen.
AKTUALISIEREN : Diese Lösung funktioniert für mich, wenn ich Hibernate Tools ausführe. Es scheint jedoch NICHT zum Erstellen der WAR-Datei zu funktionieren. Die Datei ojdbc6.jar ist nicht in der WAR-Zieldatei enthalten.
1) Erstellen Sie ein Verzeichnis mit dem Namen "lib" im Stammverzeichnis Ihres Projekts.
2) Kopieren Sie die Datei ojdbc6.jar dorthin (wie auch immer das Glas heißt.)
3) Erstellen Sie eine Abhängigkeit, die ungefähr so aussieht:
Hässlich, funktioniert aber bei mir.
Um die Dateien in die Kriegsdatei aufzunehmen, fügen Sie Ihrem POM Folgendes hinzu
quelle
Der Oracle JDBC-Treiber ist jetzt im Oracle Maven Repository verfügbar (nicht in Central).
Das Oracle Maven Repository erfordert eine Benutzerregistrierung. Anweisungen finden Sie in:
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
Update 2019-10-03
Ich habe festgestellt, dass Spring Boot jetzt den Oracle JDBC-Treiber von Maven Central verwendet .
Verwenden Sie für Gradle-Benutzer:
Eine Benutzerregistrierung ist nicht erforderlich.
Update 2020-03-02
Oracle veröffentlicht die Treiber jetzt unter der Gruppen-ID com.oracle.database. Weitere Informationen finden Sie in der Antwort von Anthony Accioly. Danke Anthony.
Oracle JDBC-Treiber kompatibel mit JDK6, JDK7 und JDK8
Oracle JDBC-Treiber kompatibel mit JDK8, JDK9 und JDK11
Oracle JDBC-Treiber kompatibel mit JDK10 und JDK11
quelle
Laden Sie das Glas herunter und platzieren Sie es in Ihrem Projekt
src/lib
. Jetzt können Sie das Maven Installer Plugin verwenden.Jetzt müssen Sie nur noch
mvn clean
einmal ausführen und die Oracle-Bibliothek wird in Ihrem lokalen Maven-Repository installiert.quelle
Oracle stellt jetzt ein Maven-Repository unter maven.oracle.com zur Verfügung. Sie müssen jedoch authentifiziert sein.
Siehe https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle
Laut den Kommentaren im Blog-Beitrag sollte der ojdbc-Treiber an folgenden Koordinaten verfügbar sein:
quelle
Versuche es mit:
quelle
1. Wie finde ich ein Repository (falls vorhanden), das dieses Artefakt enthält?
Wie DavidS kommentiert hat, ist die Zeile, die ich zum Zeitpunkt meiner Antwort zitiert habe, in der aktuellen (zum Zeitpunkt, an dem ich gerade schreibe) OTN-Lizenzvereinbarung, die ich verlinkt habe, nicht mehr vorhanden. Betrachten Sie diese Antwort nur für ältere Versionen des Artefakts wie 10.2.0.3.0 und dergleichen.
Alle Oracle Database JDBC-Treiber werden unter der OTN-Lizenzvereinbarung vertrieben .
Wenn Sie die OTN-Lizenzvereinbarung lesen, finden Sie diese Lizenzbedingung:
Aus diesem Grund können Sie das Treiberglas in keinem öffentlichen Maven-Repository finden, da es alleine verteilt wird und es in diesem Fall eine Lizenzverletzung darstellt.
Hinzufügen der Abhängigkeit:
(oder eine spätere Version) machen Maven-Downloads zum
ojdbc14-10.2.0.3.0.pom
einzigen, und in diesem Pom können Sie lesen:Hiermit werden Sie über die OTN-Lizenz informiert.
2. Wie füge ich es hinzu, damit Maven es verwendet?
Damit die oben genannten Abhängigkeiten funktionieren, stimme ich Victor Hugo zu, der Ihnen hier vorgeschlagen hat , das JAR manuell in Ihrem lokalen Maven-Repository (dem
.m2
Verzeichnis) zu installieren , indem Sie Folgendes ausführen :aber ich möchte hinzufügen, dass die oben genannte Lizenzbedingung nicht nur einschränkt, wo Sie das JDBC-JAR nicht finden können, sondern auch, wo Sie es installieren!
Tatsächlich muss Ihr lokales Maven-Repository privat und nicht freigegeben sein, da es sich bei einer Freigabe um eine Art Verteilung handelt, bei der das Glas allein verteilt wird, selbst wenn es an eine kleine Gruppe von Personen in Ihrem lokalen Netzwerk verteilt wird Verstoß gegen die OTN-Lizenzvereinbarung .
Darüber hinaus sollten Sie vermeiden, die JDBC-JAR-Datei in Ihrem Unternehmens-Repository-Manager (z. B. Artifactory oder Nexus ) als einzelnes Artefakt zu installieren, da sie bei ihrer Installation immer noch allein verteilt wird, selbst wenn sie nur an Personen in Ihrer Organisation gesendet wird eine Verletzung der OTN-Lizenzvereinbarung .
quelle
Mit Nexus können Sie Abhängigkeiten von Drittanbietern sowie Abhängigkeiten in Standard-Maven-Repositorys verwalten.
quelle
Bisher ist es nicht möglich, Maven-Repositorys zu verwenden. Ich verwende ivy als Abhängigkeitsmanagement-Tool, verwende aber auch die ibiblio-Repositorys von maven2. Und das funktioniert für Efeu:
Die Abhängigkeit von Maven2 könnte ungefähr so aussehen:
Beachten Sie, dass ich http://download.java.net/maven/2/ und http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [Organisation] / [Modul] / [definiere Revision] / [Artefakt] - [Revision]. [ext] als externe maven2-Repos in meinen Efeu-Einstellungen.
quelle
http://maven.ibiblio.org/maven/oracle
nochhttp://maven.ibiblio.org/maven/com.oracle
.Ab heute (27. Februar 2020) gab Oracle bekannt, dass alle JDBC-Clientbibliotheken von Version 11.2.0.4 (z. B. ojdbc6) bis 19.3.0 (z. B. ojdbc10) auf Maven Central unter der Gruppen-ID com.oracle.database veröffentlicht wurden :
Beispiel:
quelle
Die Oracle JDBC-Treiber sind jetzt in Maven Central verfügbar . Hier ist der Link:
Oracle JDBC-Treiber - Maven Central
Oracle-Entwicklerartikel, in dem die Verfügbarkeit der Oracle JDBC-Treiber in Maven Central angekündigt wird:
Oracle-Ankündigung - Oracle JDBC-Treiber in Maven Central verfügbar
Beispiel:
quelle
Gute Neuigkeiten alle zusammen! Schließlich können wir das offizielle Repo von Oracle verwenden: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
quelle
Einige Oracle-Produkte unterstützen das Veröffentlichen von Maven-Artefakten in einem lokalen Repository. Die Produkte verfügen über ein Plugin / Maven-Verzeichnis, das Beschreibungen enthält, wo diese Artefakte zu finden und wo sie gespeichert werden. Es gibt ein Plugin von Oracle, das den Upload tatsächlich ausführt.
Siehe: http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm
Eines der Produkte, die OJDBC auf diese Weise versenden können, ist das WLS, es verwendet jedoch ziemlich seltsame Koordinaten:
quelle
Ich versende Open Source unter LGPLv2 und selbst nach mehreren E-Mail-Gesprächen mit Oracle war nicht klar, ob ich ihren binären JDBC-Treiber mit meiner Distribution versenden durfte. Das Problem bezog sich darauf, ob meine Lizenz mit den OTN-Bedingungen kompatibel war, und sie schlugen vor, dass ich den Fahrer nicht versenden durfte. Vermutlich mit diesem Teil verwandt
Selbst wenn Sie es schaffen, den Treiber legal in Ihrem exklusiven / lokalen Maven-Repository zu veröffentlichen, besteht dennoch die Einschränkung, was Sie mit diesem Artefakt tun dürfen. Es scheint absurd, dass ich den Treiber auch dann nicht verwenden kann, wenn ich ihn in binärer Form zusammen mit der vollständigen OTN-Lizenzdatei versende, und meine Benutzer zwingen muss, den Oracle-Treiber manuell herunterzuladen und in meinen Bibliothekspfad zu wechseln, bevor sie meine Software verwenden können.
quelle
Es gibt ein Repo, das das Glas liefert. Fügen Sie in SBT einen ähnlichen Resolver hinzu: "oracle driver repo" unter " http://dist.codehaus.org/mule/dependencies/maven2 ".
und eine Abhängigkeit: "oracle"% "ojdbc14"% "10.2.0.2"
Sie können das gleiche mit Maven tun. pom.xml und jar sind verfügbar ( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ ).
quelle
Wenn Sie Netbeans verwenden, gehen Sie zu Abhängigkeiten und installieren Sie das Artefakt manuell. Suchen Sie Ihre heruntergeladene JAR-Datei und fertig. Clean Build wird alle Probleme lösen.
quelle
Ein einfaches Github-Beispielprojekt zur Verwendung eines Oracle JDBC-Treibers für Maven Project finden Sie hier .
Sie können alle Erklärungen für Ihre kontinuierliche Integration + ein Beispiel finden und auf Travis-CI ausführen.
DEMO
quelle
Für die Abhängigkeit
Versuchen
quelle
In meinem Fall funktioniert es für mich, nachdem ich diese unten stehende Versionsabhängigkeit (10.2.0.4) hinzugefügt habe. Nach dem Hinzufügen dieser Version 10.2.0.3.0 funktioniert dies nicht, da die JAR-Datei im Repository-Pfad nicht verfügbar ist .
quelle
Bitte versuchen Sie es unten:
quelle
Das hat bei mir wie Charme funktioniert. Ich habe mehrere Wege gegangen, aber das hat mir geholfen. Stellen Sie sicher, dass Sie jeden Schritt befolgen und die XML-Dateien genau gleich benennen .
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
Der Prozess ist etwas langwierig, aber ja, es funktioniert.
quelle
Gelöst
Dieses Repository muss aktiviert sein, um Oracle 10.0.3.0-Abhängigkeiten zu finden (diese Einstellung muss in Buildconfig.groovy grails.project.dependency.resolver = "ivy" // oder ivy vorgenommen werden
Verwenden Sie auch die folgende Einstellung zum Herunterladen der Oracle-Treiber zur Kompilierungszeit
Laufzeit "com.oracle:ojdbc:10.2.0.3.0"
Dies sollte Ihr Problem lösen, wenn Sie den Oracle-Treiber für die Grails-Anwendung nicht finden
quelle