Oracle JDBC ojdbc6 Jar come dipendenza Maven


103

Non riesco a convincere Maven a raggruppare il file ojdbc6.jar nel file war del mio progetto. Ho funzionato all'interno del file POM quando si specifica una dipendenza direttamente per gli strumenti di ibernazione. Ma non verrà fornito in bundle con il file war del progetto, e quindi il mio progetto non verrà eseguito su Tomcat.

Ho provato tutte le soluzioni che posso trovare in rete, comprese quelle specificate per questa domanda qui:

Trova il driver Oracle JDBC nel repository Maven

Più di recente, ho fatto quanto segue:

  1. Scarica il file jar sulla mia macchina

  2. Esegui il seguente comando per installare il jar nel mio repository locale:

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

    (Ho provato anche tutti i tipi di varianti di quel comando.)

  3. Infine, metto la dipendenza nel mio file pom:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. Eseguo una build pulita, ma non riesce:

    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]

Perché non funziona? Sono pronto a lanciare costosi pezzi di computer attraverso la stanza. Questo ha fatto perdere così tanto tempo. (Grazie, Oracle. Quanto ti abbiamo pagato di nuovo?)

Forse perché sono su un Mac, forse?


6
Puoi controllare se il file ojdbc6-11.2.0.3.jarè disponibile nel tuo repository locale nella cartella corretta?
Raghuram

1
Il file jar non sembra mai essere copiato nel repository. Solo un mucchio di file che sembrano farvi riferimento. Il file deve essere chiamato esattamente così? È solo ojdbc6.jar nella mia directory lib.
Marvo

15
Hmm! quindi mvn install:install-filenon ha funzionato. È necessario fornire la posizione assoluta ojdbc6.jaro eseguire il comando dalla cartella che lo contiene. Il nome del file non è un problema. Potresti eseguire un -Xflag in modo da poter eseguire il debug delle informazioni.
Raghuram

C'è qualche output quando corri install-file? Maven dovrebbe dirti dove installa il file o se ci sono stati errori.
nwinkler

1
Come nota non correlata: dovresti considerare l'utilizzo di un mirror del repository (qualcosa come Nexus, Artifactory, Archiva, ...). Potresti caricare il file lì e sarebbe disponibile non solo per te, ma anche per tutti gli altri che utilizzano lo stesso mirror.
nwinkler

Risposte:


136

È meglio aggiungere un nuovo repository Maven (preferibilmente utilizzando il tuo artifactory) al tuo progetto invece di installarlo nel tuo repository locale.

Sintassi di Maven:

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

Esempio di Grails:

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

3
Alla fine è quello che abbiamo fatto. Abbiamo impostato un repository qui e tutti i nostri progetti ora lo utilizzano. Penso che sia utile sapere come fare entrambe le cose, comunque.
Marvo

3
Quel repository lds.org è legale? Secondo questa risposta è illegale: stackoverflow.com/a/1074971/1415732
Alden

2
Mi chiedo, se installassi la dipendenza nel repository della mia azienda, sarebbe anche illegale? O solo i pronti contro termine pubblici sono illegali? È colpa di Oracle se non hanno un repository Maven pubblico per le loro librerie. Preferirei apprezzare che qualcuno condivida quella libreria nel loro repository (ed è costantemente accessibile).
Ondrej Kvasnovsky

3
Ondrej: A mio avviso è illegale solo se il repository è pubblico. La mia azienda ospita ojdbc in un repository privato (artifactory) nel modo da te suggerito.
Ray Myers

3
Ovviamente è "meglio" aggiungere qualche repo arbitrario al tuo progetto, sì. Wow, questo è sbagliato su così tanti livelli
zb226

41

Per chiunque legga questo post in futuro, non è necessario eseguire il cd nella directory in cui è presente il jar. Ecco cosa devi fare:

Vai alla cartella del tuo progetto da dove puoi eseguire i comandi Maven (quando esegui un ls -ltr in questa cartella, dovresti vedere pom.xml)

Fai questo -

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

Una volta fatto, puoi aggiungere la dipendenza nel tuo pom.xml, qualcosa del genere:

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

3
Solo una nota: dopo aver seguito questi passaggi, ho ancora avuto lo stesso errore in eclipse fino a quando non ho eseguito Maven > Update Project. Poi tutto ha funzionato magnificamente. Questo passaggio potrebbe essere ovvio, ma ho pensato di aggiungerlo.
user12893298320392

2
... da aggiungere al "post di ciao futuro lettore". questo non è riuscito a eseguire PowerShell, ma ha funzionato come previsto eseguendo la normale shell CMD di Windows. Nessun powershell per te!
phareim

per le persone che cercano di farlo su Windows, il consiglio di Phareim è d'oro. Ho funzionato su Windows 7 con Maven 3.3.3 digitando il comando mvn nel prompt dei comandi. PowerShell continuava a lanciare l'errore "pom non trovato".
Quest Monger

L'ordine menzionato è importante. Avevo aggiunto prima la dipendenza, quindi eseguendo il comando mvn intsall, l'errore non è scomparso. Ho provato a rimuovere la dipendenza, salva e poi aggiungila di nuovo e salva. Tutti gli errori sono stati risolti (a condizione che il progetto sia impostato come "build automaticamente")
Kailas

24

La risposta corretta è stata fornita da Raghuram nella sezione commenti alla mia domanda originale.

Per qualsiasi motivo, puntare "mvn install" a un percorso completo del file fisico ojdbc6.jar non ha funzionato per me. (Oppure l'ho ripetutamente ripetuto ripetutamente durante l'esecuzione del comando, ma non sono stati emessi errori.)

cd-ing nella directory in cui tengo ojdb6.jar e l'esecuzione del comando da lì ha funzionato la prima volta.

Se Raghuram vuole rispondere a questa domanda, accetterò invece la sua risposta. Grazie a tutti!


1
Grazie @Raghuram e 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

per risolvere il problema di ORACLE JAR con l'applicazione Spring,

Oracle JDBC ojdbc6 Jar come dipendenza Maven

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

Maven è molto esigente riguardo alle versioni che non sono sempre facili da indovinare. Bella presa che la versione è 11.2.0 e non 11.2.0.3
Michael Shopsin

5

Per prima cosa devi scaricare il particolare jar dal sito Oracle (ojdbc.jar versione 11.2.0.3)

se lo scarichi in C: \ filefolder

vai a quella directory nel prompt di cmd e fornisci il comando seguente, installerà la dipendenza, quindi potrai costruire il tuo progetto.

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

2

Dopo l'esecuzione

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

controlla la tua cartella del repository .m2 (/com/oracle/ojdbc6/11.2.0.3) per vedere se ojdbc6.jar esiste. In caso contrario, controlla le impostazioni del tuo repository Maven in $ M2_HOME / conf / settings.xml


2

La configurazione di seguito ha funzionato per me. Fare riferimento a questo collegamento per maggiori dettagli.

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

È una novità da quando ho posto la domanda. Bello!
Marvo

2

Poiché Oracle è il prodotto con licenza, è possibile aggiungere direttamente la dipendenza Maven. Per aggiungere qualsiasi versione di ojdbc.jar, è possibile eseguire i seguenti 2 passaggi.

  1. Esegui il comando seguente per installare ojdbc.jar nel repository maven locale.
/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

Questo aggiungerà la dipendenza nel repository locale.

  1. Ora aggiungi la dipendenza nel file pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

1

Ho seguito il comando seguente ha funzionato:

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

Dopo l'installazione controlla che jar sia installato correttamente sul tuo M2_repo.


1

Ho provato a utilizzare la dipendenza senza tag di versione e ha funzionato bene per me.

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

0

Aggiungi la dipendenza seguente in pom.xml

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

0

Vai all'unità C-> utente-> PcName-> trova .m2 e incolla lì il file jar ojdbc scaricato, il server lo selezionerà automaticamente.


-1

I driver Oracle JDBC e altri Jars complementari sono disponibili su Central Maven. Si consiglia di utilizzare le versioni Oracle JDBC supportate ufficiali da 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 e 19.7.0.0. Questi sono disponibili su Central Maven Repository . Fare riferimento alla Guida centrale di Maven per maggiori dettagli.

Si consiglia di utilizzare l'ultima versione. Consulta le domande frequenti per la compatibilità JDK.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.