it-swarm.com.de

Finden Sie den Oracle-JDBC-Treiber im Maven-Repository

Ich möchte den Oracle-Jdbc-Treiber meinem Projekt als Abhängigkeit (Laufzeitbereich) - ojdbc14 ..__ hinzufügen. In der MVNrepository-Site ist die Abhängigkeit, die in das POM eingefügt werden soll:

<dependency>
    <groupId>com.Oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

natürlich funktioniert das nicht, da es sich nicht in dem zentralen Repository befindet, das von maven ..__ verwendet wird. 2 Fragen:

  1. Wie finde ich ein Repository (falls vorhanden), das dieses Artefakt enthält?

  2. Wie füge ich es hinzu, damit Maven es verwenden kann?

263
rperez

Wie finde ich ein Repository (falls vorhanden), das dieses Artefakt enthält?

Leider gibt es aufgrund der Binärlizenz kein öffentliches Repository mit der Oracle Driver JAR. Dies passiert mit vielen Abhängigkeiten, ist aber nicht Mavens Schuld. Wenn Sie ein öffentliches Repository mit der JAR finden, können Sie sicher sein, dass dies illegal ist.

Wie füge ich es hinzu, damit Maven es benutzt?

Einige JARs, die aus Lizenzgründen nicht hinzugefügt werden können, haben einen pom -Eintrag im Maven Central Repo . Probieren Sie es einfach aus, es enthält die bevorzugten Maven-Informationen des Herstellers:

<groupId>com.Oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>

... und die URL zum Herunterladen der Datei lautet http://www.Oracle.com/technology/software/tech/Java/sqlj_jdbc/index.html .

Sobald Sie die JAR heruntergeladen haben, fügen Sie sie einfach mit in Ihr Computer-Repository ein (Anmerkung: Ich habe die groupId, die artifactId und die version aus dem POM gezogen):

mvn install:install-file -DgroupId=com.Oracle -DartifactId=ojdbc14 \
     -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true

Der letzte Parameter zum Generieren eines POM erspart Ihnen pom.xml-Warnungen

Wenn Ihr Team über ein lokales Maven-Repository verfügt diese Anleitung kann hilfreich sein, um die JAR dort hochzuladen.

404
victor hugo

Aus irgendeinem Grund konnte ich keine der oben genannten Lösungen zum Laufen bringen. (Kann immer noch nicht.)

Was ich stattdessen tat, war, das Glas in mein Projekt (blech) aufzunehmen und dann eine "System" -abhängigkeit für das Glas zu erstellen, die den Pfad zum Glas anzeigt. Es ist wahrscheinlich nicht der richtige Weg, es zu tun, aber es funktioniert. Außerdem müssen die anderen Entwickler des Teams (oder der Mann, der den Build-Server eingerichtet hat) nicht mehr das Glas in ihre lokalen Repositorys stellen.

UPDATE: Diese Lösung funktioniert für mich, wenn ich Hibernate Tools ausführen. Es scheint jedoch NICHT zum Erstellen der WAR-Datei zu funktionieren. Es enthält nicht die Datei ojdbc6.jar in der WAR-Zieldatei.

1) Erstellen Sie im Stammverzeichnis Ihres Projekts ein Verzeichnis mit dem Namen "lib".

2) Kopieren Sie dort die Datei ojdbc6.jar (wie auch immer die jar heißt).

3) Erstellen Sie eine Abhängigkeit, die ungefähr so ​​aussieht:

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

Hässlich, funktioniert aber für mich.

Um die Dateien in die Kriegsdatei aufzunehmen, fügen Sie Ihrem Pom Folgendes hinzu

<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

Laden Sie das Glas herunter und platzieren Sie es in Ihrem Projekt src/lib. Jetzt können Sie das Maven-Installationsprogramm-Plugin verwenden.

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

Jetzt müssen Sie nur noch mvn clean einmal ausführen, und die Oracle-Bibliothek lib ist in Ihrem lokalen Maven-Repository installiert.

28
Peter Enis

Oracle stellt jetzt ein Maven-Repository unter maven.Oracle.com .__ bereit. Sie müssen jedoch authentifiziert werden.

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

Laut den Kommentaren im Blog-Post sollte der ojdbc-Treiber unter den folgenden Koordinaten verfügbar sein:

<groupId>com.Oracle.weblogic</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.3-0-0</version>
 <packaging>jar</packaging>
22
Sebastien

Versuche es mit:

<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

Der Oracle-JDBC-Treiber ist jetzt im Oracle Maven Repository (nicht in Central) verfügbar.

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

Das Oracle Maven Repository erfordert eine Benutzerregistrierung. Anweisungen finden Sie in:

https://blogs.Oracle.com/dev2dev/get-Oracle-jdbc-treiber-und-ucp-von-Oracle-maven-repository-ohne-ideen

15

1. Wie finde ich ein Repository (falls vorhanden), das dieses Artefakt enthält?

As DavidS hat kommentiert, dass die Zeile, die ich zum Zeitpunkt der Beantwortung zitiert habe, in der aktuellen OTN-Lizenzvereinbarung (zum Zeitpunkt der Erstellung) nicht mehr vorhanden ist Ich habe verlinkt. Betrachten Sie diese Antwort nur für ältere Versionen des Artefakts wie 10.2.0.3.0 und ähnliches.

Alle Oracle Database JDBC Drivers werden unter dem OTN License Agreement vertrieben.

Wenn Sie die OTN-Lizenzvereinbarung lesen, finden Sie diese Lizenzbedingung:

Sie dürfen nicht:
...
- Verteilen Sie die Programme, es sei denn, Sie werden von Ihren Bewerbungen begleitet.
...

aus diesem Grund können Sie das Treiberglas in keinem öffentlichen Maven-Repository finden, da es alleine verteilt wird und in diesem Fall eine Lizenzverletzung vorliegt.

Hinzufügen der Abhängigkeit:

<dependency>
    <groupId>com.Oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>

(oder eine spätere Version) veranlassen, dass Maven das ojdbc14-10.2.0.3.0.pom nur, und in diesem pom können Sie lesen:

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

die Sie über die OTN-Lizenz informiert.

2. Wie füge ich es hinzu, damit Maven es benutzt?

Damit die oben genannten Abhängigkeiten funktionieren, stimme ich victor hugo zu, die Sie vorgeschlagen haben hier , um das jar manuell in Ihr lokales Maven-Repository zu installieren (das .m2 Verzeichnis) durch Ausführen von:

mvn install:install-file -Dfile={Path_to_your_ojdbc.jar} -DgroupId=com.Oracle 
-DartifactId=ojdbc -Dversion=10.2.0.3.0 -Dpackaging=jar

ich möchte jedoch hinzufügen, dass die oben angegebene Lizenzdauer nicht nur den Ort einschränkt, an dem Sie die JDBC-JAR nicht finden können, sondern den Ort, an dem Sie sie installieren zu!

Tatsächlich muss Ihr lokales Maven-Repository privat sein und darf nicht gemeinsam genutzt werden , da es sich bei einer gemeinsamen Nutzung um eine Art Distribution handelt, in der das Jar alleine verteilt wird. auch wenn es sich um eine kleine Gruppe von Personen in Ihrem lokalen Netzwerk handelt und dies einen Verstoß gegen die OTN-Lizenzvereinbarung darstellt.

Außerdem sollten Sie die Installation der JDBC-JAR-Datei in Ihrem Unternehmens-Repository-Manager vermeiden (z. B. Artifactory oder Nexus) ) als einzelnes Artefakt, da es, wenn es installiert wäre, immer noch alleine verteilt wird, auch wenn es nur an Personen in Ihrer Organisation gesendet wird. Dies stellt einen Verstoß gegen die OTN-Lizenzvereinbarung dar.

14
taringamberini

Mit Nexus können Sie Abhängigkeiten von Drittanbietern sowie Abhängigkeiten in Standard-Maven-Repositorys verwalten.

12
Michael Munsey

Maven-Repositories können bisher nicht verwendet werden. Ich verwende Efeu als Abhängigkeitsverwaltungstool, benutze aber auch die ibiblio-Repositorys von maven2. Und das funktioniert für Efeu:

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

Die Abhängigkeit von Maven2 könnte so aussehen:

<dependency> 
    <groupId>Oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>10.2.0.2</version> 
</dependency>

Beachten Sie, dass ich http://download.Java.net/maven/2/ und http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/[organisation] definiere. /[module + /[revision ///[artifact-d-referenzrevision-d.extext] als externe Maven2-Repos auf meinen Efeueinstellungen.

6
tugcem

Gute Nachrichten, Leute! Schließlich können wir das offizielle Repo von Oracle verwenden: https://blogs.Oracle.com/dev2dev/get-Oracle-jdbc-drivers-and-ucp-von-Oracle-maven-repository-without-ides

3

Einige Oracle-Produkte unterstützen die Veröffentlichung von Maven-Artefakten in einem lokalen Repository. Die Produkte verfügen über ein Plugin/Maven-Verzeichnis, das Beschreibungen enthält, wo diese Artefakte zu finden sind und wo sie gespeichert werden sollen. Es gibt ein Plugin von Oracle, das den Upload tatsächlich übernimmt.

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

Ein Produkt, das OJDBC auf diese Weise versenden kann, ist das WLS. Es verwendet jedoch ziemlich seltsame Koordinaten:

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

Ich versende OpenSource unter LGPLv2 und selbst nach mehreren E-Mail-Gesprächen mit Oracle war nicht klar, ob ich ihren binären JDBC-Treiber mit meiner Distribution versenden darf. Das Problem bezog sich darauf, ob meine Lizenz mit ihren OTN-Bedingungen vereinbar war, und schlug daher vor, dass ich den Fahrer nicht versenden darf. Vermutlich verwandt mit diesem Teil

(b) die Programme mit von Ihnen entwickelten Anwendungen an Ihre Kunden zu verteilen, vorausgesetzt, dass jeder dieser Lizenznehmer den Lizenzbedingungen zustimmt, die den Bedingungen dieser Vereinbarung entsprechen

Selbst wenn Sie es schaffen, den Treiber in Ihrem exklusiven/lokalen Maven-Repository legal zu veröffentlichen, besteht immer noch die Einschränkung, was Sie mit diesem Artefakt tun dürfen. Es scheint absurd, dass selbst wenn ich ihren Treiber in binärer Form zusammen mit der vollständigen OTN-Lizenzdatei versende, ich ihn immer noch nicht verwenden kann und meine Benutzer zwingen muss, den Oracle-Treiber manuell herunterzuladen und in meinen Bibliothekspfad zu legen, bevor sie meine Software verwenden können.

1
Craig

Für die Abhängigkeit

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

Versuchen

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

Es gibt ein Repo, das das Glas liefert. Fügen Sie in SBT einen Resolver ähnlich dem folgenden hinzu: "Oracle driver repo" unter " http://dist.codehaus.org/mule/dependencies/maven2 "

und eine Abhängigkeit: "Oracle"% "ojdbc14"% "10.2.0.2"

Sie können dasselbe mit Maven machen. pom.xml und jar sind verfügbar ( http://dist.codehaus.org/mule/dependencies/maven2/Oracle/ojdbc14/10.2.0.2/ ).

0
yǝsʞǝlA

Ein einfaches Github-Beispielprojekt für die Verwendung eines Oracle-JDBC-Treibers für Maven-Projekt finden Sie hier .

Sie finden alle Erklärungen für Ihre kontinuierliche Integration + ein Beispiel und können auf Travis-CI ausgeführt werden.

DEMO

0
sgrillon

Wenn Sie Netbeans verwenden, gehen Sie zu Abhängigkeiten und installieren Sie das Artefakt manuell. Finden Sie Ihre heruntergeladene .jar-Datei und fertig. Clean Build löst alle Probleme.

0
Zafrullah Syed