Oracle JDBC ojdbc6 Jar jako zależność Mavena


103

Nie mogę zmusić Mavena do dołączenia pliku ojdbc6.jar do pliku wojennego mojego projektu. Mam to działające w pliku POM podczas określania zależności bezpośrednio dla narzędzi hibernacji. Ale nie zostanie dołączony do pliku wojennego projektu, dlatego mój projekt nie będzie działał na Tomcat.

Wypróbowałem każde rozwiązanie, jakie mogę znaleźć w sieci, w tym te określone tutaj dla tego pytania:

Znajdź sterownik Oracle JDBC w repozytorium Maven

Ostatnio wykonałem następujące czynności:

  1. Pobierz plik jar na mój komputer

  2. Uruchom następującą komendę, aby zainstalować jar w moim repozytorium lokalnym:

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

    (Próbowałem też różnych wariantów tego polecenia.)

  3. Na koniec umieściłem zależność w moim pliku pom:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. Uruchomiłem czystą kompilację, ale się nie udała:

    mvn -U clean package
    
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building jazztwo 0.0.1
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.jar
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.700s
    [INFO] Finished at: Tue Mar 27 15:06:14 PDT 2012
    [INFO] Final Memory: 3M/81M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project jazztwo: Could not resolve dependencies for project edu.berkeley:jazztwo:war:0.0.1: Could not find artifact com.oracle:ojdbc6:jar:11.2.0.3 in central (http://repo1.maven.org/maven2) -> [Help 1]

Dlaczego to nie działa? Jestem gotowy rzucać drogimi częściami komputerowymi po pokoju. To zmarnowało tak dużo czasu. (Dziękuję, Oracle. Ile ci zapłaciliśmy ponownie?)

Czy to dlatego, że jestem na komputerze Mac?


6
Czy możesz sprawdzić, czy plik ojdbc6-11.2.0.3.jarjest dostępny w twoim lokalnym repozytorium we właściwym folderze?
Raghuram

1
Wydaje się, że plik jar nigdy nie został skopiowany do repozytorium. Tylko kilka plików, które wydają się odnosić do niego. Czy plik musi nazywać się dokładnie tak? To po prostu ojdbc6.jar w moim katalogu lib.
Marvo

15
Hmm! więc mvn install:install-filenie zadziałało. Należy podać bezwzględną lokalizację ojdbc6.jarlub uruchomić polecenie z folderu, który je zawiera. Nazwa pliku nie stanowi problemu. Możesz uruchomić z -Xflagą, aby móc debugować informacje.
Raghuram

Czy po uruchomieniu są jakieś dane wyjściowe install-file? Maven powinien powiedzieć, gdzie instaluje plik lub czy wystąpiły jakieś błędy.
nwinkler

1
Jako niepowiązana uwaga: powinieneś przyjrzeć się używaniu lustra repozytorium (czegoś takiego jak Nexus, Artifactory, Archiva, ...). Możesz tam przesłać plik i będzie on dostępny nie tylko dla Ciebie, ale także dla wszystkich korzystających z tego samego serwera lustrzanego.
nwinkler

Odpowiedzi:


136

Lepiej jest dodać nowe repozytorium Mavena (najlepiej używając własnego artefaktora) do swojego projektu zamiast instalować je w lokalnym repozytorium.

Składnia Mavena:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>
... 
<repositories>
    <repository>
      <id>codelds</id>
      <url>https://code.lds.org/nexus/content/groups/main-repo</url>
    </repository>
  </repositories>

Przykład Grails:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'

3
Ostatecznie to właśnie zrobiliśmy. Utworzyliśmy tutaj repozytorium, z którego teraz korzystają wszystkie nasze projekty. Myślę jednak, że warto wiedzieć, jak to zrobić.
Marvo,

3
Czy to repozytorium lds.org jest legalne? Zgodnie z tą odpowiedzią jest to nielegalne: stackoverflow.com/a/1074971/1415732
Alden

2
Zastanawiam się, czy gdybym zainstalował zależność w repozytorium mojej firmy, czy byłoby to również nielegalne? A może tylko publiczne repozytoria są nielegalne? To wina Oracle, że nie mają publicznego repozytorium Maven dla swoich bibliotek. Wolałbym raczej, aby ktoś udostępnił tę bibliotekę w swoim repozytorium (i jest ona stale dostępna).
Ondrej Kvasnovsky

3
Ondrej: W moim rozumieniu jest to nielegalne tylko wtedy, gdy repozytorium jest publiczne. Moja firma obsługuje ojdbc w prywatnym repozytorium maven (artefaktora) w sposób, który sugerujesz.
Ray Myers

3
Oczywiście „lepiej” jest dodać do projektu jakieś dowolne repozytorium, tak. Wow, to jest złe na tak wielu poziomach
zb226

41

Każdy, kto będzie czytał ten post w przyszłości, nie będzie musiał przechodzić do katalogu, w którym znajduje się plik jar. Oto, co musisz zrobić -

Przejdź do folderu projektu, z którego możesz uruchamiać polecenia maven (gdy wykonujesz ls -ltr w tym folderze, powinieneś zobaczyć pom.xml)

Zrób to -

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=<Path where the jar is, example downloads>/ojdbc6.jar -DgeneratePom=true

Gdy to zrobisz, możesz dodać zależność do swojego pom.xml, coś takiego -

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>

3
Tylko uwaga: po wykonaniu tych kroków nadal miałem ten sam błąd w zaćmieniu, dopóki nie wykonałem Maven > Update Project. Wtedy wszystko działało pięknie. Ten krok może być oczywisty, ale pomyślałem, że dodam go.
user12893298320392

2
... aby dodać do "hello future reader post". nie udało się uruchomić programu PowerShell, ale działało zgodnie z oczekiwaniami, uruchamiając zwykłą powłokę CMD systemu Windows. Nie masz powłoki PowerShell!
phareim

dla ludzi, którzy próbują to zrobić w systemie Windows, rada Phareima jest złota. Mam to działające na Windows 7 z maven 3.3.3, wpisując polecenie mvn w wierszu poleceń. powershell ciągle generował błąd „nie znaleziono pom”.
Quest Monger

Wspomniana kolejność jest ważna. Najpierw dodałem zależność, a następnie uruchomiłem komendę mvn intsall. Błąd nie zniknął. Próbowałem usunąć zależność, zapisz, a następnie dodaj ponownie i zapisz. Wszystkie błędy rozwiązane (pod warunkiem, że projekt jest ustawiony na „buduj automatycznie”)
Kailas,

24

Prawidłowej odpowiedzi udzielił Raghuram w sekcji komentarzy na moje pierwotne pytanie.

Z jakiegoś powodu wskazanie opcji „mvn install” na pełną ścieżkę fizycznego pliku ojdbc6.jar nie działało. (Lub konsekwentnie wielokrotnie flubowałem go podczas uruchamiania polecenia, ale nie wystąpiły żadne błędy).

wejście cd do katalogu, w którym trzymam ojdb6.jar i wykonanie polecenia z tego miejsca zadziałało za pierwszym razem.

Jeśli Raghuram chciałby odpowiedzieć na to pytanie, przyjmuję jego odpowiedź. Dziękuję wszystkim!


1
Dzięki @Raghuram i Marvo
spiderman

7
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

aby rozwiązać problem JAR ORACLE z aplikacją wiosenną,

Oracle JDBC ojdbc6 Jar jako zależność Mavena

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`

Maven jest bardzo wybredny, jeśli chodzi o wersje, które nie zawsze są łatwe do odgadnięcia. Niezły haczyk, że wersja to 11.2.0, a nie 11.2.0.3
Michael Shops w

5

Najpierw musisz pobrać konkretny jar ze strony Oracle (ojdbc.jar wersja 11.2.0.3)

jeśli pobierzesz go do C: \ filefolder

przejdź do tego katalogu w wierszu poleceń cmd i podaj poniższe polecenie, które zainstaluje zależność, a następnie możesz zbudować swój projekt.

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true

2

Po wykonaniu

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

sprawdź folder repozytorium .m2 (/com/oracle/ojdbc6/11.2.0.3), aby zobaczyć, czy ojdbc6.jar istnieje. Jeśli nie, sprawdź ustawienia repozytorium maven w $ M2_HOME / conf / settings.xml


2

Poniższa konfiguracja zadziałała dla mnie. Więcej informacji znajdziesz w tym linku .

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

To nowość, odkąd zadałem pytanie. Miły!
Marvo

2

Ponieważ Oracle jest produktem licencjonowanym, istnieje problem z bezpośrednim dodawaniem zależności maven. Aby dodać dowolną wersję ojdbc.jar, można wykonać poniższe 2 kroki.

  1. Uruchom poniższe polecenie, aby zainstalować ojdbc.jar w lokalnym repozytorium maven.
/opt/apache-maven/bin/mvn install:install-file
    -Dfile=<path-to-file>/ojdbc7.jar
    -DgroupId=com.oracle
    -DartifactId=ojdbc7
    -Dversion=12.1.0.1.0
    -Dpackaging=jar

Spowoduje to dodanie zależności do lokalnego repozytorium.

  1. Teraz dodaj zależność w pliku pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

1

Postępowałem zgodnie z poniższym poleceniem, które zadziałało:

mvn install:install-file -Dfile=E:\JAVA\Spring\ojdbc14-10.2.0.4.0.jar\ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar

Po instalacji sprawdź, czy jar jest poprawnie zainstalowany na Twoim M2_repo.


1

Próbowałem użyć zależności bez tagu wersji i działa dobrze dla mnie.

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

0

Dodaj następującą zależność w pom.xml

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>oracle</artifactId>
    <version>10.2.0.2.0</version>
</dependency>

0

Przejdź do dysku C-> użytkownik-> PcName-> znajdź .m2 i wklej tam pobrany plik jar ojdbc, serwer automatycznie wybierze ten plik.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.