Oracle JDBC ojdbc6 Jar en tant que dépendance Maven


103

Je n'arrive pas à convaincre Maven de regrouper le fichier ojdbc6.jar dans le fichier war de mon projet. Je le fais fonctionner dans le fichier POM lorsque je spécifie une dépendance directement pour les outils Hibernate. Mais il ne sera pas fourni avec le fichier war du projet, et donc mon projet ne fonctionnera pas sur Tomcat.

J'ai essayé toutes les solutions que je peux trouver sur le net, y compris celles spécifiées pour cette question ici:

Rechercher le pilote Oracle JDBC dans le référentiel Maven

Plus récemment, j'ai fait ce qui suit:

  1. Téléchargez le fichier jar sur ma machine

  2. Exécutez la commande suivante pour installer le fichier jar dans mon référentiel local:

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

    (J'ai également essayé toutes sortes de variantes de cette commande.)

  3. Enfin, j'ai mis la dépendance dans mon fichier pom:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. J'exécute une version propre, mais elle échoue:

    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]

Pourquoi ça ne marche pas? Je suis prêt à lancer des pièces informatiques coûteuses à travers la pièce. Cela a perdu beaucoup de temps. (Merci, Oracle. Combien vous avons-nous encore payé?)

Est-ce parce que je suis sur un Mac, peut-être?


6
Pouvez-vous vérifier si le fichier ojdbc6-11.2.0.3.jarest disponible dans votre référentiel local dans le bon dossier?
Raghuram

1
Le fichier jar ne semble jamais être copié dans le référentiel. Juste un tas de fichiers qui semblent y faire référence. Le fichier doit-il être appelé exactement comme ça? C'est juste ojdbc6.jar dans mon répertoire lib.
Marvo

15
Hmm! donc mvn install:install-filen'a pas fonctionné. Vous devez indiquer l'emplacement absolu ojdbc6.jarou exécuter la commande à partir du dossier qui la contient. Le nom du fichier n'est pas un problème. Vous pouvez exécuter avec un -Xindicateur afin de pouvoir déboguer les informations.
Raghuram

Y a-t-il une sortie lorsque vous exécutez install-file? Maven devrait vous dire où il installe le fichier ou s'il y a eu des erreurs.
nwinkler

1
À titre indicatif: vous devriez envisager d'utiliser un miroir de référentiel (quelque chose comme Nexus, Artifactory, Archiva, ...). Vous pouvez télécharger le fichier là-bas et il serait disponible non seulement pour vous, mais aussi pour tous les autres utilisant le même miroir.
nwinkler

Réponses:


136

Il est préférable d'ajouter un nouveau référentiel Maven (en utilisant de préférence votre propre artificiel) à votre projet au lieu de l'installer dans votre référentiel local.

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

Exemple Grails:

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

3
En fin de compte, c'est ce que nous avons fait. Nous avons mis en place un référentiel ici, et tous nos projets l'utilisent désormais. Cependant, je pense qu'il est utile de savoir comment faire les deux.
Marvo

3
Ce référentiel lds.org est-il légal? Selon cette réponse, c'est illégal: stackoverflow.com/a/1074971/1415732
Alden

2
Je me demande, si j'installerais une dépendance au référentiel de mon entreprise, serait-ce également illégal? Ou seuls les dépôts publics sont illégaux? C'est la faute d'Oracle s'ils n'ont pas de référentiel Maven public pour leurs bibliothèques. J'apprécierais plutôt que quelqu'un partage cette bibliothèque dans son référentiel (et il est constamment accessible).
Ondrej Kvasnovsky

3
Ondrej: À ma connaissance, ce n'est illégal que si le référentiel est public. Mon entreprise héberge ojdbc dans un dépôt privé maven (artificiel) de la manière que vous suggérez.
Ray Myers

3
Bien sûr, il est "préférable" d'ajouter un dépôt arbitraire à votre projet, oui. Wow, c'est faux à tant de niveaux
zb226

41

Pour tous ceux qui liront ce post à l'avenir, vous n'avez pas besoin de cd dans le répertoire où le fichier jar est présent. Voici ce que tu dois faire -

Accédez au dossier de votre projet à partir duquel vous pouvez exécuter les commandes maven (lorsque vous effectuez un ls -ltr dans ce dossier, vous devriez voir pom.xml)

Faites ceci -

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

Une fois que cela est fait, vous pouvez ajouter la dépendance dans votre pom.xml, quelque chose comme ceci -

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

3
Juste une note: après avoir suivi ces étapes, j'ai toujours eu la même erreur d'éclipse jusqu'à ce que je joue Maven > Update Project. Ensuite, tout a fonctionné à merveille. Cette étape est peut-être évidente, mais j'ai pensé que je l'ajouterais.
user12893298320392

2
... à ajouter au "bonjour futur lecteur". cela a échoué en cours d'exécution PowerShell, mais a fonctionné comme prévu en exécutant le CMD-shell Windows ordinaire. Pas de PowerShell pour vous!
phareim

pour les gens qui essaient de le faire sur les fenêtres, le conseil de phareim est de l'or. Je l'ai fait fonctionner sur Windows 7 exécutant maven 3.3.3 en tapant la commande mvn dans l'invite de commande. PowerShell a continué à lancer l'erreur `` pom not found ''.
Quest Monger

L'ordre mentionné est important. J'avais ajouté la dépendance d'abord, puis exécutant la commande mvn intsall, l'erreur n'a pas disparu. J'ai essayé de supprimer la dépendance, d'enregistrer, puis de l'ajouter à nouveau et d'enregistrer. Toutes les erreurs sont résolues (à condition que votre projet soit configuré pour "construire automatiquement")
Kailas

24

La bonne réponse a été fournie par Raghuram dans la section commentaires de ma question initiale.

Pour une raison quelconque, pointer "mvn install" vers un chemin complet du fichier physique ojdbc6.jar ne fonctionnait pas pour moi. (Ou je l'ai constamment raté lors de l'exécution de la commande, mais aucune erreur n'a été générée.)

cd-ing dans le répertoire où je garde ojdb6.jar et exécuter la commande à partir de là a fonctionné la première fois.

Si Raghuram souhaite répondre à cette question, j'accepterai sa réponse à la place. Merci tout le monde!


1
Merci @Raghuram et 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

pour résoudre le problème du JAR ORACLE avec l'application Spring,

Oracle JDBC ojdbc6 Jar en tant que dépendance Maven

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

Maven est très pointilleux sur les versions qui ne sont pas toujours faciles à deviner. Belle prise que la version est 11.2.0 et non 11.2.0.3
Michael Shopsin

5

Vous devez d'abord télécharger le fichier jar particulier à partir du site Oracle (ojdbc.jar version 11.2.0.3)

si vous le téléchargez dans C: \ filefolder

allez dans ce répertoire dans l'invite cmd et fournissez la commande ci-dessous.Il installera la dépendance.Ensuite, vous pourrez créer votre projet.

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

2

Après avoir exécuté

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

vérifiez votre dossier de référentiel .m2 (/com/oracle/ojdbc6/11.2.0.3) pour voir si ojdbc6.jar existe. Sinon, vérifiez les paramètres de votre référentiel maven sous $ M2_HOME / conf / settings.xml


2

La configuration ci-dessous a fonctionné pour moi. Reportez-vous à ce lien pour plus de détails.

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

C'est nouveau depuis que j'ai posé la question. Agréable!
Marvo

2

Étant donné qu'Oracle est le produit sous licence, il est difficile d'ajouter directement la dépendance maven. Pour ajouter n'importe quelle version de ojdbc.jar, ci-dessous 2 étapes pourraient suffire.

  1. Exécutez la commande ci-dessous pour installer ojdbc.jar dans le référentiel maven local.
/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

Cela ajoutera la dépendance dans le référentiel local.

  1. Maintenant, ajoutez la dépendance dans le fichier pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

1

J'ai suivi la commande ci-dessous, cela a fonctionné:

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

Après l'installation, vérifiez que jar est correctement installé sur votre M2_repo.


1

J'ai essayé d'utiliser la dépendance sans balise de version et cela a bien fonctionné pour moi.

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

0

Ajouter la dépendance suivante dans pom.xml

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

0

Accédez au lecteur C-> utilisateur-> PcName-> find .m2 et collez-y le fichier jar ojdbc téléchargé, le serveur le choisira automatiquement.


-1

Les pilotes Oracle JDBC et autres Jars compagnons sont disponibles sur Central Maven. Nous suggérons d'utiliser les versions officielles d'Oracle JDBC prises en charge à partir de 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 et 19.7.0.0. Ceux-ci sont disponibles sur le référentiel central de Maven . Reportez-vous au guide central de Maven pour plus de détails.

Il est recommandé d'utiliser la dernière version. Consultez la FAQ pour la compatibilité JDK.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.