2012-03-27 4 views
75

Non riesco a convincere Maven a raggruppare il file ojdbc6.jar nel file di guerra del mio progetto. Ho funzionato all'interno del file POM quando si specifica una dipendenza direttamente per gli strumenti di Hibernate. Ma non verrà associato al file di guerra del progetto e quindi il mio progetto non verrà eseguito su Tomcat.Oracle JDBC ojdbc6 Jar come Maven Dipendente

Ho provato ogni soluzione che posso trovare là fuori sulla rete, compresi quelli specificati per questa domanda qui:

Find Oracle JDBC driver in Maven repository

Più di recente, ho fatto quanto segue:

  1. Scarica il file jar sulla mia macchina

  2. Eseguire 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 tutti i tipi di varianti di quel comando, anche.)

  3. Infine, ho messo la dipendenza nel mio file pom:

    <dependency> 
        <groupId>com.oracle</groupId> 
        <artifactId>ojdbc6</artifactId> 
        <version>11.2.0.3</version> 
    </dependency> 
    
  4. corro un generazione 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 buttare costose parti di computer attraverso la stanza. Questo ha sprecato così tanto tempo. (Grazie, Oracle, quanto ti abbiamo pagato di nuovo?)

Forse perché sono su un Mac?

+6

Potete controllare se il file 'ojdbc6-11.2.0.3.jar' è disponibile nel repository locale al cartella corretta? – Raghuram

+1

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

+15

Hmm! quindi 'mvn install: install-file' non ha funzionato. Dovresti dare la posizione assoluta di 'ojdbc6.jar' o eseguire il comando dalla cartella che lo contiene. Il nome del file non è un problema. Si può eseguire con un flag '-X' in modo da poter eseguire il debug di informazioni. – Raghuram

risposta

21

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

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

cd-ing nella directory in cui tengo ojdb6.jar ed eseguendo il comando da lì ha funzionato la prima volta.

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

+1

Grazie a @Raghuram e Marvo – spiderman

112

È preferibile aggiungere nuovo repository Maven al progetto anziché installarlo nel repository locale.

Maven sintassi:

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

Grails esempio:

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

In fin dei conti è quello che abbiamo fatto. Abbiamo creato un repository qui e tutti i nostri progetti ora lo usano. Penso che sia utile sapere come fare entrambe le cose, comunque. – Marvo

+2

Il repository lds.org è legale? Secondo questa risposta è illegale: http://stackoverflow.com/a/1074971/1415732 – Alden

+2

Mi chiedo se installare la dipendenza nel repository della mia azienda sarebbe illegale anche questo? O solo i repository pubblici sono illegali? È colpa di Oracle che non abbiano un repository Maven pubblico per le loro librerie. Gradirei piuttosto che qualcuno stia condividendo quella libreria nel loro repository (ed è costantemente accessibile). –

1

Dopo l'esecuzione

vostra cartella di repository .m2
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true 

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

1

ho seguito sotto il comando 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 il check di installazione che vaso è installato correttamente sul M2_repo.

29

Per chiunque legga questo post in futuro, non è necessario effettuare il cd nella directory in cui è presente il jar. Ecco cosa dovete fare -

Vai alla cartella del progetto da cui è possibile eseguire i comandi Maven (Quando si esegue un ls -ltr in questa cartella, si dovrebbe vedere pom.xml)

fare 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 questo, è possibile aggiungere la dipendenza nel vostro pom.xml, qualcosa di simile -

<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 eclissi fino a quando ho eseguito "Maven> Aggiorna progetto". Quindi tutto ha funzionato magnificamente. Questo passaggio potrebbe essere ovvio, ma ho pensato di aggiungerlo. – mb595x

+2

... da aggiungere al "ciao futuro lettore di post". questo PowerShell in esecuzione fallita, ma ha funzionato come previsto eseguendo la normale shell CMD di Windows. Nessun powershell per te! – phareim

+0

per chi cerca di farlo su Windows, il consiglio di phareim è oro. ho questo funziona su Windows 7 che esegue Maven 3.3.3 digitando il comando mvn nel prompt dei comandi. PowerShell continuava a lanciare l'errore "pom non trovato". –

2

Prima di tutto bisogna scaricare il vaso particolare dal sito di Oracle (versione ojdbc.jar 11.2.0.3)

se si scarica in C: \ filefolder

andare a quella directory in cmd tempestiva e di fornire il sotto command.It installerà il dependency.Then si può costruire il vostro progetto.

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

E:\WORK\EclipseL_Work\ro>mvn install:install-file -Dfile=C:\Users\xxxx\Downloa ds\lib\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

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

JDBC Oracle ojdbc6 Jar come Maven dipendenza

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

+0

Maven è molto pignolo per le versioni che non sono sempre facili da indovinare. Bello notare che la versione è 11.2.0 non 11.2.0.3 –

2

Sotto config ha lavorato per me. Fare riferimento a questo link per ulteriori dettagli.

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

Questo è nuovo dato che ho posto la domanda. Bello! – Marvo

0

Add seguito dipendenza nel pom.xml

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