web-dev-qa-db-fra.com

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

Je souhaite ajouter le pilote Oracle jdbc à mon projet en tant que dépendance (portée d'exécution) - ojdbc14 . Dans le site MVNrepository, la dépendance à mettre dans le 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 ne se trouve pas dans le référentiel central utilisé par maven . 2 questions:

  1. Comment trouver un référentiel (le cas échéant) contenant cet artefact?

  2. Comment puis-je l'ajouter pour que Maven l'utilise?

263
rperez

Comment trouver un référentiel (le cas échéant) contenant cet artefact?

Malheureusement, à cause de la licence binaire, il n’existe pas de référentiel public avec le fichier JAR du pilote Oracle. Cela se produit avec de nombreuses dépendances, mais ce n’est pas la faute de Maven. Si vous trouvez un référentiel public contenant le fichier JAR, vous pouvez être sûr que cela est illégal.

Comment puis-je l'ajouter pour que Maven l'utilise?

Certains fichiers JAR 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 les informations Maven préférées 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, dans ce cas, est http://www.Oracle.com/technology/software/tech/Java/sqlj_jdbc/index.html .

Une fois que vous avez téléchargé le fichier JAR, ajoutez-le simplement au référentiel de votre ordinateur avec (notez que j'ai extrait le groupId, l'artefactId et la version du 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 évitera les avertissements pom.xml

Si votre équipe a un référentiel Maven local ce guide peut être utile pour télécharger le fichier JAR à cet emplacement.

404
victor hugo

Pour une raison quelconque, aucune des solutions ci-dessus ne pouvait fonctionner. (Je ne peux toujours pas.)

Au lieu de cela, j’ai choisi d’inclure le fichier jar dans mon projet (blech), puis de lui créer une dépendance "système" qui indique le chemin d'accès au fichier. Ce n'est probablement pas la bonne façon de le faire, mais cela fonctionne. Et cela évite aux autres développeurs de l'équipe (ou au responsable de la configuration du serveur de construction) de placer le fichier dans leur référentiel local.

UPDATE: Cette solution fonctionne pour moi lorsque je lance Hibernate Tools. Cela ne semble PAS fonctionner pour construire le fichier WAR, cependant. Il n'inclut pas le fichier ojdbc6.jar dans le fichier WAR cible.

1) Créez un répertoire appelé "lib" à la racine de votre projet.

2) Copiez le fichier ojdbc6.jar ici (quel que soit le nom du fichier jar.)

3) Créez une dépendance qui ressemble à 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>

Moche, mais travaille pour moi.

Pour inclure les fichiers dans le fichier war, ajoutez 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>
47
Marvo

Téléchargez le pot et placez-le 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>

Il ne vous reste plus qu'à exécuter mvn clean une seule fois et Oracle lib est installé dans votre référentiel Maven local.

28
Peter Enis

Oracle expose maintenant un référentiel Maven sur maven.Oracle.com Toutefois, vous devez être authentifié.

Voir https://blogs.Oracle.com/WebLogicServer/entry/weblogic_server_and_the_Oracle

D'après les commentaires dans l'article 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>
22
Sebastien

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

Le pilote JDBC Oracle est maintenant disponible dans le référentiel Oracle Maven (pas dans Central).

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

Le référentiel Oracle Maven nécessite un enregistrement d'utilisateur. Les instructions peuvent être trouvées dans:

https://blogs.Oracle.com/dev2dev/get-Oracle-jdbc-drivers-and-ucp-from-Oracle-maven-repository-without-ides

15
Bienvenido David

1. Comment trouver un référentiel (le cas échéant) contenant cet artefact?

Tous les pilotes JDBC de la base de données Oracle sont distribués sous le contrat de licence OTN .

Si vous lisez le contrat de licence OTN, vous trouvez la durée de la licence suivante:

Vous ne pouvez pas:
...
- distribuez les programmes sauf s'ils sont accompagnés de vos applications;
...

c'est pourquoi vous ne pouvez pas trouver le pot du pilote dans un référentiel Maven public, car il serait distribué seul et, le cas échéant, il s'agirait d'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) oblige Maven à télécharger le ojdbc14-10.2.0.3.0.pom uniquement, 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 sur la licence OTN.

2. Comment puis-je l'ajouter pour que Maven l'utilise?

Afin de faire fonctionner la dépendance ci-dessus, je suis d’accord avec victor hugo qui vous proposait ici d’installer manuellement le fichier jar dans votre référentiel Maven local (le répertoire .m2) en exécutant:

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 veux ajouter que la durée de licence ci-dessus ne limite pas uniquement les emplacements où vous ne pouvez pas trouver le fichier JDBC, mais limite également ceux où vous les installez!

En fait, votre référentiel Maven local doit être privé et non partagé, car s'il était partagé, il s'agirait d'une sorte de distribution dans laquelle le fichier jar serait distribué seul, même s'il était destiné à un petit groupe de personnes de votre réseau local. et cela représente une violation du contrat de licence OTN.

De plus, je pense que vous devriez éviter d'installer le fichier JDBC dans le gestionnaire de référentiel de votre société (tel que Artifactory ou Nexus ) comme un artefact unique, car s'il était installé, il serait toujours distribué seul, même si cela concerne uniquement les personnes de votre organisation, ce qui constitue une violation du contrat de licence OTN.

14
taringamberini

Vous pouvez utiliser Nexus pour gérer les dépendances de tiers ainsi que les dépendances dans les référentiels Maven standard.

12
Michael Munsey

Jusqu'à présent, il n'était pas possible d'utiliser des référentiels Maven. J'utilise ivy comme outil de gestion des dépendances, mais j'utilise également les référentiels ibiblio de maven2. Et cela fonctionne pour le lierre:

<dependency org="Oracle" name="ojdbc14" rev="10.2.0.2" conf="*->default"/>

La dépendance de Maven2 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] sous forme de repos maven2 externe sur mes paramètres de lierre.

6
tugcem

Certains produits Oracle prennent en charge la publication d’artefacts maven dans un référentiel local. Les produits ont un répertoire plugin/maven qui contient des descriptions où trouver ces artefacts et où les stocker. Il existe un plugin d'Oracle qui effectuera le téléchargement.

Voir: http://docs.Oracle.com/middleware/1212/core/MAVEN/config_maven.htm

L’un des produits pouvant expédier OJDBC de cette manière est le WLS, mais il utilise des coordonnées assez étranges:

<groupId>com.Oracle.weblogic</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.2-0-0</version>
2
eckes

J'envoie opensource sous LGPLv2 et même après plusieurs conversations par e-mail avec Oracle, ils ne savaient pas si j'avais le droit d'envoyer leur pilote JDBC binaire avec ma distribution. La question étant de savoir si mon permis était compatible avec leurs conditions OTN, ils ont alors suggéré que je n'étais pas autorisé à expédier le pilote. Probablement lié à cette partie

(b) de distribuer les programmes avec les applications que vous avez développées à vos clients, à condition que chacun de ces preneurs de licence accepte de respecter les conditions du contrat de licence.

Ainsi, même si vous parvenez à publier légalement le pilote dans votre référentiel Maven exclusif/local, il existe toujours une restriction sur ce que vous êtes autorisé à faire avec cet artefact. Il semble absurde que, même si j'expédie leur pilote sous forme binaire avec le fichier de licence OTN complet, je ne puisse toujours pas l'utiliser et oblige mes utilisateurs à télécharger manuellement le pilote Oracle et à passer dans le chemin de la bibliothèque avant de pouvoir utiliser mon logiciel.

1
Craig

Pour la dépendance

<dependency>
    <groupId>com.Oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.2</version>
</dependency>

Essayer

<repository>
    <id>mvnrepository</id>
    <url>http://nexus.saas.hand-china.com/content/repositories/rdc</url>
</repository>
0
bosco1

Il y a un repo qui fournit le pot. Dans SBT, ajoutez un résolveur semblable à celui-ci: "Référentiel de pilote Oracle" à " 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/ ).

0
yǝsʞǝlA

Vous pouvez trouver un exemple de projet simple Github pour utiliser un pilote JDBC Oracle sur Maven Project ici .

Vous trouverez toutes les explications relatives à votre intégration continue + un exemple et une exécution sur Travis-CI.

D&EACUTE;MO

0
sgrillon

Si vous utilisez Netbeans, allez à Dépendances et installez manuellement l'artefact. Localisez votre fichier .jar téléchargé et c'est fait. Une construction propre résoudra tous les problèmes.

0
Zafrullah Syed