Chcę dodać sterownik jdbc oracle do mojego projektu jako zależność (zasięg działania) - ojdbc14. W witrynie MVNrepository zależność do umieszczenia w POM jest:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
oczywiście to nie działa, ponieważ nie ma go w centralnym repozytorium używanym przez maven. 2 pytania:
Jak znaleźć repozytorium (jeśli istnieje), które zawiera ten artefakt?
Jak mogę go dodać, aby Maven go używał?
Odpowiedzi:
Jak znaleźć repozytorium (jeśli istnieje), które zawiera ten artefakt?
Niestety z powodu licencji binarnej nie ma publicznego repozytorium z JAR Oracle Driver. Dzieje się tak z wieloma zależnościami, ale nie jest to wina Mavena. Jeśli znajdziesz publiczne repozytorium zawierające plik JAR, możesz być pewien, że jest to nielegalne.
Jak mogę go dodać, aby Maven go używał?
Niektóre pliki JAR, których nie można dodać ze względu na licencję, mają wpis pom w repozytorium Maven Central . Po prostu sprawdź, zawiera preferowane przez dostawcę informacje Maven:
... oraz adres URL do pobrania pliku, którym w tym przypadku jest http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .
Po pobraniu pliku JAR po prostu dodaj go do repozytorium komputera za pomocą (uwaga: ściągnąłem groupId, artefactId i wersję z POM):
Ostatni parametr do generowania POM pozwoli Ci zaoszczędzić od ostrzeżeń pom.xml
Jeśli Twój zespół ma lokalne repozytorium Maven, ten przewodnik może być pomocny w przesłaniu tam pliku JAR.
źródło
Z jakiegokolwiek powodu nie udało mi się uruchomić żadnego z powyższych rozwiązań. (Nadal nie mogę.)
Zamiast tego włączyłem słoik do mojego projektu (blech), a następnie stworzyłem dla niego zależność „systemową”, która wskazuje ścieżkę do słoika. Prawdopodobnie nie jest to właściwy sposób, ale działa. Eliminuje to potrzebę umieszczania słoika w lokalnych repozytoriach przez innych programistów w zespole (lub faceta konfigurującego serwer kompilacji).
AKTUALIZACJA : To rozwiązanie działa dla mnie po uruchomieniu narzędzi hibernacji. Wydaje się jednak, że NIE działa on przy tworzeniu pliku WAR. Nie zawiera pliku ojdbc6.jar w docelowym pliku WAR.
1) Utwórz katalog o nazwie „lib” w katalogu głównym swojego projektu.
2) Skopiuj tam plik ojdbc6.jar (niezależnie od tego, jak nazywa się jar).
3) Utwórz zależność, która wygląda mniej więcej tak:
Brzydki, ale dla mnie działa.
Aby dołączyć pliki do pliku wojny, dodaj do pom
źródło
Sterownik JDBC Oracle jest teraz dostępny w repozytorium Oracle Maven (nie w centralnym).
Repozytorium Oracle Maven wymaga rejestracji użytkownika. Instrukcje można znaleźć w:
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
Aktualizacja 03.10.2019
Zauważyłem, że Spring Boot używa teraz sterownika Oracle JDBC ze strony Maven Central .
W przypadku użytkowników Gradle użyj:
Nie ma potrzeby rejestracji użytkownika.
Aktualizacja 2020-03-02
Oracle publikuje teraz sterowniki pod identyfikatorem grupy com.oracle.database. Aby uzyskać więcej informacji, zobacz odpowiedź Anthony Accioly. Dzięki, Anthony.
Sterownik JDBC Oracle zgodny z JDK6, JDK7 i JDK8
Sterownik JDBC Oracle zgodny z JDK8, JDK9 i JDK11
Sterownik JDBC Oracle zgodny z JDK10 i JDK11
źródło
Pobierz słoik i umieść go w swoim projekcie
src/lib
. Teraz możesz użyć wtyczki instalatora maven.Teraz musisz wykonać
mvn clean
tylko raz, a biblioteka Oracle jest zainstalowana w lokalnym repozytorium maven.źródło
Oracle ujawnia teraz repozytorium maven na maven.oracle.com Jednak musisz być uwierzytelniony.
Zobacz https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle
Zgodnie z komentarzami w blogu sterownik ojdbc powinien być dostępny przy następujących współrzędnych:
źródło
Spróbuj z:
źródło
1. Jak znaleźć repozytorium (jeśli istnieje), które zawiera ten artefakt?
Jak DavidS skomentował wiersz, który zacytowałem w momencie, w którym odpowiedziałem, nie jest już obecny w bieżącej (w chwili, gdy piszę) umowie licencyjnej OTN, którą podłączyłem. Rozważ tę odpowiedź tylko w przypadku starszej wersji artefaktu, jak 10.2.0.3.0 i tym podobne.
Wszystkie sterowniki JDBC bazy danych Oracle są rozpowszechniane na podstawie umowy licencyjnej OTN .
Jeśli czytasz Umowę licencyjną OTN, odnajdujesz ją:
dlatego nie możesz znaleźć słoika sterownika w żadnym publicznym repozytorium Maven, ponieważ byłby dystrybuowany sam, a gdyby tak się stało, byłoby to naruszeniem prawa jazdy.
Dodanie zależności:
(lub jakakolwiek późniejsza wersja) sprawiają, że Maven pobiera
ojdbc14-10.2.0.3.0.pom
jedyne, aw tym pom możesz przeczytać:który informuje Cię o licencji OTN.
2. Jak mogę go dodać, aby Maven go używał?
W celu uczynienia powyższą zależność działa zgadzam się z Victor Hugo którzy sugeruję tutaj , aby ręcznie zainstalować słoik do lokalnego repozytorium Maven (The
.m2
katalogu) za pomocą polecenia:ale chcę dodać, że powyższy warunek licencyjny nie ogranicza się tylko tam, gdzie nie można znaleźć słoika JDBC, ale ogranicza także miejsce instalacji.
W rzeczywistości Twoje lokalne repozytorium Maven musi być prywatne i nie może być współużytkowane, ponieważ gdyby było współużytkowane, byłby rodzajem dystrybucji, w której słoik jest dystrybuowany sam, nawet jeśli do małej grupy ludzi w sieci lokalnej, a to reprezentuje Naruszenie umowy licencyjnej OTN .
Ponadto uważam, że powinieneś unikać instalowania słoika JDBC w menedżerze repozytorium korporacji (takim jak Artifactory lub Nexus ) jako pojedynczy artefakt, ponieważ jeśli byłby zainstalowany, byłby nadal dystrybuowany sam, nawet jeśli tylko w twojej organizacji, a to reprezentuje naruszenie umowy licencyjnej OTN .
źródło
Możesz używać Nexusa do zarządzania zależnościami stron trzecich, a także zależnościami w standardowych repozytoriach maven.
źródło
Do tej pory nie można używać repozytoriów maven. Używam bluszczu jako narzędzia do zarządzania zależnościami, ale także używam repozytoriów ibiblio maven2. I to działa na bluszcz:
Zależność Maven2 może być taka:
Zauważ, że zdefiniowałem http://download.java.net/maven/2/ i http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [organizacja] / [moduł] / [ wersja] / [artefakt] - [wersja]. [ext] jako zewnętrzne repozytorium maven2 w moich ustawieniach bluszczu.
źródło
http://maven.ibiblio.org/maven/oracle
anihttp://maven.ibiblio.org/maven/com.oracle
.Na dzień dzisiejszy (27 lutego 2020 r.) Oracle ogłosiło , że opublikowało wszystkie biblioteki klienta JDBC od wersji 11.2.0.4 (np. Ojdbc6) do 19.3.0 (np. Ojdbc10) w Maven Central pod identyfikatorem grupy com.oracle.database :
Przykład:
źródło
Sterowniki Oracle JDBC są teraz dostępne w Maven Central . Tutaj jest link:
Sterowniki Oracle JDBC - Maven Central
Artykuł dla deweloperów Oracle ogłaszający dostępność sterowników Oracle JDBC w Maven Central:
Oracle ogłasza - sterowniki JDBC Oracle dostępne w Maven Central
Przykład:
źródło
Dobre wieści wszyscy! Wreszcie możemy skorzystać z oficjalnego repozytorium Oracle: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
źródło
Niektóre produkty Oracle obsługują publikowanie artefaktów raju w lokalnym repozytorium. Produkty mają katalog wtyczek / maven, który zawiera opisy, gdzie znaleźć te artefakty i gdzie je przechowywać. Istnieje wtyczka Oracle, która faktycznie wykona przesyłanie.
Zobacz: http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm
Jednym z produktów, które mogą wysyłać OJDBC w ten sposób, jest WLS, wykorzystuje jednak dość dziwne współrzędne:
źródło
Wysyłam oprogramowanie typu open source na licencji LGPLv2 i nawet po kilku rozmowach e-mailowych z Oracle nie było jasne, czy wolno mi wysłać ich binarny sterownik JDBC z moją dystrybucją. Problem dotyczył zgodności mojej licencji z warunkami OTN, dlatego zasugerowali, że nie wolno mi wysłać kierowcy. Przypuszczalnie związane z tą częścią
Więc nawet jeśli uda ci się opublikować sterownik legalnie w swoim wyłącznym / lokalnym repozytorium maven, nadal istnieje ograniczenie tego, co możesz zrobić z tym artefaktem. Wydaje się absurdalne, że nawet jeśli dostarczę sterownik w formie binarnej wraz z pełnym plikiem licencji OTN, nadal nie mogę go użyć i muszę zmusić moich użytkowników do ręcznego pobrania sterownika Oracle i zejścia na ścieżkę biblioteki, zanim będą mogli korzystać z mojego oprogramowania.
źródło
Jest jedno repo, które zapewnia słoik. W SBT dodaj resolver podobny do tego: „repozytorium sterowników oracle” w „ http://dist.codehaus.org/mule/dependencies/maven2 ”
oraz zależność: „oracle”% ”ojdbc14„% ”10.2.0.2”
Możesz zrobić to samo z maven. Pom.xml i jar są dostępne ( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ ).
źródło
Jeśli korzystasz z Netbeans, przejdź do Zależności i ręcznie zainstaluj artefakt. Znajdź pobrany plik .jar i gotowe. czysta wersja rozwiąże wszelkie problemy.
źródło
Można znaleźć projekt prosty przykładowy GitHub do stosowania sterownika Oracle JDBC na Maven projekcie tutaj .
Możesz znaleźć wszystkie wyjaśnienia dotyczące ciągłej integracji + próbkę i uruchomić na Travis-CI.
PRÓBNY
źródło
Dla zależności
Próbować
źródło
W moim przypadku działa to dla mnie po dodaniu poniższej zależności wersji (10.2.0.4). Po dodaniu tej wersji 10.2.0.3.0 nie działa, ponieważ plik .jar nie jest dostępny w ścieżce repozytorium.
źródło
Spróbuj poniżej:
źródło
To działało dla mnie jak urok. Przeszedłem wiele sposobów, ale pomogło mi to. Pamiętaj, aby wykonać każdy krok i nazwać pliki XML dokładnie tak samo .
https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
Proces jest trochę nudny, ale tak, działa.
źródło
ROZWIĄZANY
To repozytorium musi umożliwiać wyszukiwanie zależności Oracle 10.0.3.0 (to ustawienie należy wykonać w Buildconfig.groovy grails.project.dependency.resolver = "bluszcz" // lub bluszcz
Użyj również następującego ustawienia do kompilacji pobierania sterownika Oracle
środowisko wykonawcze „com.oracle:ojdbc:10.2.0.3.0”
To powinno rozwiązać problem związany ze znalezieniem sterownika Oracle dla aplikacji Grails
źródło