Trouver le pilote JDBC D'Oracle dans le dépôt Maven
je veux ajouter le pilote oracle jdbc à mon projet en tant que dépendance (runtime scope) - ojdbc14. Dans le site MVNrepository la dépendance à mettre dans la POM est:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
bien sûr, cela ne fonctionne pas car il n'est pas dans le référentiel central utilisé par maven. 2 questions:
-
Comment puis-je trouver un dépôt (le cas échéant) qui contient cet artefact?
-
comment l'Ajouter pour que Maven va l'utiliser?
16 réponses
Comment puis-je trouver un dépôt (le cas échéant) qui contient cet artefact?
malheureusement à cause de la licence binaire il n'y a pas de dépôt public avec le Driver JAR Oracle. Cela se produit avec de nombreuses dépendances, mais ce n'est pas la faute de Maven. Si vous trouvez un dépôt public contenant le POT, vous pouvez être sûr que c'est illégal.
comment l'Ajouter pour que Maven l'utilise?
certains pots qui ne peuvent pas être ajoutés pour des raisons de licence ont une entrée pom dans le Maven Central repo . Il suffit de vérifier, il contient l'information Maven préféré du vendeur:
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
...et l'URL pour télécharger le fichier qui est dans ce cas http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .
une fois que vous avez téléchargé le pot juste ajouter il à votre dépôt informatique avec (notez que j'ai tiré le groupId, artifactId et la version de la POM):
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 \
-Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true
le dernier paramètre pour générer un POM vous sauvera de pom.Avertissements xml
si votre équipe dispose d'un dépôt Maven local ce guide pourrait être utile pour télécharger le bocal.
pour quelque raison que ce soit, je n'ai pu faire fonctionner aucune des solutions ci-dessus. (Je ne peux toujours pas.)
ce que j'ai fait à la place était d'inclure le jar dans mon projet (blech) et de créer une dépendance" système " pour celui-ci qui indique le chemin vers le jar. Ce n'est probablement pas la bonne façon de le faire, mais ça marche. Et cela élimine le besoin pour les autres développeurs de l'équipe (ou le gars qui configure le serveur de compilation) de mettre le bocal dans leurs dépôts locaux.
UPDATE : Cette solution me convient lorsque je travaille avec des outils D'hibernation. Il ne semble pas fonctionner pour construire le dossier de guerre, cependant. Il n'inclut pas la ojdbc6.dossier jar dans le dossier de la guerre des cibles.
1) Créez un répertoire appelé" lib " dans la racine de votre projet.
2) Copier la ojdbc6.fichier jar (quel que soit le bocal est appelé.)
3) Créer une dépendance qui ressemble à quelque chose comme ceci:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
<scope>system</scope>
<systemPath>${basedir}/lib/ojdbc6.jar</systemPath> <!-- must match file name -->
</dependency>
laid, mais ça marche pour moi.
pour inclure les fichiers dans le fichier war ajouter ce qui suit à votre pom
<build>
<finalName>MyAppName</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/java</directory>
<targetPath>WEB-INF/classes</targetPath>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.css</include>
<include>**/*.html</include>
</includes>
</resource>
<resource>
<directory>${basedir}/lib</directory>
<targetPath>WEB-INF/lib</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Téléchargez la jarre et placez-la dans votre projet src/lib
. Vous pouvez maintenant utiliser le plugin Maven installer.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>install-oracle-jdbc</id>
<goals>
<goal>install-file</goal>
</goals>
<phase>clean</phase>
<configuration>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
<createChecksum>true</createChecksum>
<file>${project.basedir}/src/lib/ojdbc6.jar</file>
</configuration>
</execution>
</executions>
</plugin>
Maintenant, vous n'avez plus qu'à exécuter mvn clean
une seule fois et l'oracle lib est installé dans votre dépôt maven local.
Oracle expose maintenant un dépôt maven à maven.oracle.com Cependant, vous devez être authentifié.
voir https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle
selon les commentaires dans le billet de blog, le pilote ojdbc devrait être disponible aux coordonnées suivantes:
<groupId>com.oracle.weblogic</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.3-0-0</version>
<packaging>jar</packaging>
Essayez avec:
<repositories>
<!-- Repository for ORACLE ojdbc6. -->
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
le pilote Oracle JDBC est maintenant disponible dans le dépôt Oracle Maven (pas dans Central).
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>
le dépôt Oracle Maven nécessite un enregistrement utilisateur. Les Instructions se trouvent dans:
1. Comment puis-je trouver un dépôt (le cas échéant) qui contient cet artefact?
Tous Base de données Oracle JDBC Drivers sont distribuited en vertu de la OTN Contrat de Licence .
si vous lisez le contrat de licence OTN vous trouvez ce terme de licence:
vous ne pouvez pas:
...
- distribuer les programmes à moins que accompagné de vos demandes;
...
c'est pourquoi vous ne pouvez pas trouver le pot du conducteur dans un dépôt public Maven, parce qu'il serait distribué seul, et si cela se produisait, ce serait une violation de licence.
ajout de la dépendance:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
(ou toute version ultérieure) faire Maven téléchargements le ojdbc14-10.2.0.3.0.pom
seulement, et dans ce pom, vous pouvez lire:
...
<licenses>
<license>
<name>Oracle Technology Network Development and Distribution License Terms</name>
<url>http://www.oracle.com/technology/software/htdocs/distlic.html</url>
</license>
</licenses>
...
qui vous informe de la licence OTN.
2. Comment puis-je l'Ajouter pour que Maven l'utilise?
afin de faire les travaux de dépendance ci-dessus je suis d'accord avec victor hugo qui vous suggéraient ici d'installer manuellement le bocal dans votre dépôt Maven local (le répertoire .m2
) en lançant:
mvn install:install-file -Dfile={Path_to_your_ojdbc.jar} -DgroupId=com.oracle
-DartifactId=ojdbc -Dversion=10.2.0.3.0 -Dpackaging=jar
mais je tiens à ajouter que le terme de licence au-dessus de ne limite pas seulement là où vous ne pouvez pas trouver le jar JDBC, mais il limite aussi là où vous l'installez!
En fait votre référentiel Maven local doit être privé et non partagé parce que si elle est partagée, il serait une sorte de distribution dans lequel le pot est distribué seul, même si à un petit groupe de personnes dans votre réseau local, et cela ne représente qu'une OTN Contrat de Licence de violation .
en outre, je pense que vous devrait éviter d'installer le jar JDBC dans votre société gestionnaire de dépôt (tels que Artifactory ou Nexus ) comme un seul artefact parce que si elle était installée, il serait encore distribué seul, même si à des personnes dans votre organisation seulement, et cela représente une violation du contrat de licence OTN .
vous pouvez utiliser Nexus pour gérer les dépendances de tiers ainsi que les dépendances dans les dépôts standard maven.
Jusqu'à présent, il n'est pas possible d'utiliser les dépôts maven. J'utilise ivy comme outil de gestion des dépendances, mais j'utilise aussi les dépôts ibiblio de maven2. Et ça marche pour ivy:
<dependency org="oracle" name="ojdbc14" rev="10.2.0.2" conf="*->default"/>
Maven2' s de la dépendance pourrait être quelque chose comme ça:
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.2</version>
</dependency>
notez que je définis http://download.java.net/maven/2 / et http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext] comme externes maven2 repos sur mon lierre paramètres.
bonne nouvelle à tous! Enfin nous pouvons utiliser le rapport officiel D'Oracle: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides
certains produits Oracle prennent en charge la publication d'artefacts maven dans un dépôt local. Les produits ont un répertoire plugin / maven qui contient des descriptions où trouver ces artéfacts et où les stocker. Il y a un Plugin D'Oracle qui fera le téléchargement.
voir: http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm
L'un des produits qui peuvent transporter OJDBC de cette manière est le WLS, il utilise cependant des coordonnées assez étranges:
<groupId>com.oracle.weblogic</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.2-0-0</version>
j'expédie opensource sous LGPLv2 et même après plusieurs e-mails avec Oracle ils ne savaient pas si j'étais autorisé à expédier leur pilote JDBC binaire avec ma distribution. La question était de savoir si mon permis était compatible avec les conditions de L'OTN, de sorte qu'ils ont suggéré que je n'étais pas autorisé à expédier le conducteur. Probablement liée à cette partie
(b) pour distribuer les programmes avec les applications que vous avez développées à vos clients fournis que chaque preneur de licence accepte de concéder des licences conformément aux modalités du présent Contrat
donc même si vous parvenez à publier le pilote légalement dans votre dépôt Maven exclusif/local il y a toujours la restriction sur ce que vous êtes autorisé à faire avec cet artefact. Semble absurde que, même si je expédie leur Pilote sous forme binaire avec le dossier complet de licence OTN Je ne peux toujours pas l'utiliser et doit forcer mes utilisateurs à télécharger manuellement le pilote Oracle et passez dans mon chemin de bibliothèque avant qu'ils puissent utiliser mon logiciel.
il y a un repo qui fournit le bocal. Dans SBT ajouter un résolveur similaire à ceci: "le pilote oracle repo" à " http://dist.codehaus.org/mule/dependencies/maven2 "
et une dépendance: "oracle" % "ojdbc14" % "10.2.0.2 "
vous pouvez faire la même chose avec maven. POM.xml et jar sont disponibles ( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2 / ).
si vous utilisez Netbeans, allez à dépendances et installez manuellement artefact. Localisez votre téléchargement .jar file et c'est fait. nouvelle version permettra de résoudre tous les problèmes.
résolu
- S'il vous plaît faire les réglages suivants pour résoudre l'erreur
ce dépôt doit être activé pour trouver les dépendances D'Oracle 10.0.3.0 (ce réglage doit être fait dans Buildconfig.groovy Graal.projet.dépendance.résolveur = "ivy" // ou ivy
également utiliser le paramètre suivant pour le téléchargement du pilote Oracle de compilation
l'exécution "du com.oracle: ojdbc: 10.2.0.3.0"
cela devrait résoudre votre problème pour ne pas trouver le pilote Oracle pour l'application grails