Frage

Ich möchte den Oracle-JDBC-Treiber als Abhängigkeit (Laufzeitbereich) zu meinem Projekt hinzufügen – ojdbc14.Auf der MVNrepository-Site lautet die im POM einzufügende Abhängigkeit:

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

Dies funktioniert natürlich nicht, da es sich nicht im 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?

War es hilfreich?

Lösung

Wie finde ich ein Repository (falls vorhanden), die diesen Artefakt enthält?

Leider ist aufgrund der binären Lizenz gibt es keine öffentliche Repository mit dem Oracle-Treiber JAR. Dies geschieht mit vielen Abhängigkeiten aber nicht Maven Schuld. Wenn Sie geschehen, ein öffentliches Repository enthält die JAR finden können Sie sicher sein, dass illegal ist.

Wie kann ich es so, dass Maven wird es verwenden?

Einige Gläser, die auf Grund können nicht hinzugefügt Lizenz Gründe haben eine pom Eintrag in der Maven Zentral Repo . Probier es mal aus, es enthält den bevorzugten Maven Informationen des Verkäufers:

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

... und die URL zum Herunterladen der Datei, die in diesem Fall http://www.oracle.com/technology/software/tech /java/sqlj_jdbc/index.html .

Wenn Sie die JAR heruntergeladen haben fügen Sie einfach auf Ihren Computer-Repository mit (man beachte, zog ich die groupId, artifactId und Version aus dem POM):

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 für eine POM Erzeugung werden Sie von pom.xml Warnungen speichern

Wenn Ihr Team einen lokalen Maven-Repository dieser Anleitung hat könnte hilfreich sein, die JAR dort hochladen.

Andere Tipps

Aus irgendeinem Grund konnte ich nicht eine der oben genannten Lösungen zu arbeiten. (Noch nicht.)

Was ich tat, war stattdessen das Glas in meinem Projekt (blech) aufzunehmen und dann ein „System“ Abhängigkeit für sie zu schaffen, die den Weg in das Gefäß anzeigt. Es ist wahrscheinlich nicht der richtige Weg, es zu tun, aber es funktioniert. Und es entfällt die Notwendigkeit für die anderen Entwickler im Team (oder der Mann den Build-Server einrichten) das Glas in ihren lokalen Repositories zu setzen.

UPDATE : Diese Lösung funktioniert für mich, wenn ich Hibernate Tools ausführen. Es scheint nicht für den Bau der WAR-Datei zu arbeiten, aber. Es wird nicht die ojdbc6.jar Datei im Ziel IST-Datei enthalten.

1) Erstellen Sie ein Verzeichnis "lib" in der Wurzel des Projektes genannt.

2) Kopieren Sie die Datei ojdbc6.jar dort (was auch immer das Glas genannt wird.)

3) Erstellen Sie eine Abhängigkeit, die etwa wie folgt 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, aber für mich funktioniert.

Um die Dateien in der WAR-Datei fügen Sie den folgenden Code zu Ihrem pom umfasst

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

Laden Sie das Glas und legen Sie sie in Ihrem Projekt src/lib. Jetzt können Sie die Maven-Installer-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 haben Sie nur mvn clean einmal auszuführen, und das Orakel lib in Ihrer lokalen Maven-Repository installiert.

Oracle ist nun eine Maven-Repository bei maven.oracle.com aussetzt Allerdings müssen Sie authentifiziert werden.

Siehe https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle

Nach den Kommentaren im Blog die ojdbc Treiber schreiben sollte an den folgenden Koordinaten zur Verfügung:

<groupId>com.oracle.weblogic</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.3-0-0</version>
 <packaging>jar</packaging>

Versuchen Sie, 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> 

Der Oracle-JDBC-Treiber ist jetzt in der Oracle Maven Repository (nicht in Central).

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

Die Oracle Maven Repository erfordert eine Benutzerregistrierung. Eine Anleitung finden Sie in:

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

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

Als DavidS hat kommentiert, dass die Zeile, die ich zum Zeitpunkt meiner Antwort zitiert habe, in der aktuellen OTN-Lizenzvereinbarung, die ich verlinkt habe (zu der Zeit, als ich jetzt schreibe), nicht mehr vorhanden ist.Berücksichtigen Sie diese Antwort nur für ältere Versionen des Artefakts, z. B. 10.2.0.3.0 und dergleichen.

Alle JDBC-Treiber für Oracle-Datenbanken werden unter der verteilt OTN-Lizenzvereinbarung.

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

Sie dürfen nicht:
...
- die Programme zu verteilen, es sei denn, sie liegen Ihren Bewerbungen bei;
...

Aus diesem Grund können Sie das Treiber-JAR in keinem öffentlichen Maven-Repository finden, da es einzeln verteilt werden würde und es in diesem Fall einen Lizenzverstoß darstellen würde.

Abhängigkeit hinzufügen:

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

(oder eine spätere Version) Maven lädt das herunter 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 verwenden kann?

Damit die oben genannte Abhängigkeit funktioniert, stimme ich zu Victor Hugo die Sie vorgeschlagen haben Hier um das JAR manuell in Ihrem lokalen Maven-Repository zu installieren (das .m2 Verzeichnis), indem Sie Folgendes ausführen:

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

aber das möchte ich hinzufügen die oben genannte Lizenzlaufzeit schränkt nicht nur ein, wo Sie das JDBC-JAR nicht finden können, sondern auch, wo Sie es installieren!

Tatsächlich Ihr lokales Maven-Repository muss privat sein und darf nicht geteilt werden denn wenn es geteilt würde, wäre es eine Art Verteilung, bei der das Glas allein verteilt wird, selbst wenn es an eine kleine Gruppe von Menschen in Ihrem lokalen Netzwerk geht, und dies stellt eine dar Verstoß gegen die OTN-Lizenzvereinbarung.

Außerdem denke ich, dass du Sie sollten es vermeiden, das JDBC-JAR in Ihrem Unternehmens-Repository-Manager zu installieren (wie zum Beispiel Kunsthandwerklich oder Nexus) als einzelnes Artefakt, denn wenn es installiert wäre, würde es immer noch allein verteilt werden, selbst wenn es nur an Personen in Ihrer Organisation wäre, und dies stellt ein Verstoß gegen die OTN-Lizenzvereinbarung.

Sie können Nexus verwenden 3rd-Party-Abhängigkeiten sowie Abhängigkeiten in Standard-maven-Repositories zu verwalten.

Bis jetzt ist es nicht möglich, Maven-Repositories zu verwenden. Ich bin mit Efeu als Dependency Management-Tool, sondern auch maven2' s ibiblio Repositories verwenden. Und das funktioniert für Efeu:

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

Maven2' s Abhängigkeit etwas wie das sein könnte:

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

Beachten Sie, dass i definieren http://download.java.net/maven/2/ und http://mirrors.ibiblio.org/pub/mirrors/ maven / mule / Abhängigkeiten / maven2 / [Organisation] / [Modul] / [Revision] / [Artefakt] -.. [revision] [ext] als extern maven2 repos auf meinen Efeu-Einstellungen

Gute Nachrichten jeder! Schließlich können wir Oracle offiziellen Repo verwenden: https: //blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides

Einige Oracle Produkte Unterstützung publishing Maven Artefakte zu einem lokalen Repository. Die Produkte haben ein Plugin / Maven Verzeichnis, das Beschreibungen enthält, wo diese Artefakte zu finden und wo sie gespeichert werden sollen. Es ist ein Plugin von Oracle, die den Upload tatsächlich tun.

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

Eines der Produkte, die OJDBC auf diese Weise versenden kann, ist die WLS, verwendet es jedoch ziemlich seltsam Koordinaten:

<groupId>com.oracle.weblogic</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.2-0-0</version>

Ich versende Open Source unter LGPLv2 und auch nach mehreren E-Mail-Konversationen mit Oracle sie unklar waren, ob ich durfte ihren binären JDBC-Treiber mit meiner Distribution versenden. Das Problem damit zusammen, ob meine Lizenz war kompatibel mit ihren OTN Bedingungen, so dass sie vorgeschlagen wurde ich den Fahrer nicht erlaubt zu versenden. Vermutlich im Zusammenhang mit diesem Teil

  

(b) die Programme mit Anwendungen verteilen Sie an Ihre Kunden entwickelt haben, vorausgesetzt, dass jeder solche Lizenznehmer stimmt Bedingungen in Übereinstimmung mit den Bedingungen dieser Vereinbarung zu lizenzieren

So, selbst wenn Sie den Treiber legal in Ihrer exklusiven / local Maven-Repository gibt es noch die Beschränkung zu veröffentlichen verwalten, was Sie erlaubt sind mit diesem Artefakt zu tun. Es scheint absurd, dass selbst wenn ich, dass ich zusammen mit der vollen OTN Lizenzdatei noch nicht in binärer Form ihre Fahrer versandt und meine Benutzer müssen verwenden können erzwingen manuell die Oracle-Treiber und falle in meine Bibliothek Pfad herunterladen, bevor sie meine Software verwenden kann.

Es gibt ein Repo, die das Glas zur Verfügung stellt. In SBT fügen Sie einen Resolver ähnlich wie folgt aus: "Oracle-Treiber Repo" at „ http://dist.codehaus.org/mule/dependencies/maven2 "

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

Sie können mit Maven das gleiche tun. pom.xml und Glas stehen zur Verfügung ( http: // dist. codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ ).

Wenn Sie Netbeans verwenden, zur Abhängigkeiten und manuell Artefakt installieren. Suchen Sie die heruntergeladene JAR-Datei und ihre getan. bereinigter Build werden alle Probleme lösen.

können Sie eine Github einfachen Beispielprojekt für den Einsatz finden Sie einen Oracle-JDBC-Treiber auf Maven Projekt hier .

Sie können alle explication für Ihre kontinuierliche Integration finden + eine Probe und laufen auf Travis-CI.

DEMO

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>

GELÖST

  • Bitte beachten Sie folgende Einstellungen um den Fehler zu beheben

Dieses Repository für die Suche nach Oracle 10.0.3.0 dependecies ermöglichen muss (diese Einstellung muss in Buildconfig.groovy zu tun grails.project.dependency.resolver = "Efeu" // oder Efeu

Verwenden Sie auch für Kompilierung Oracle-Treiber-Download folgende Einstellung

runtime "com.oracle:ojdbc:10.2.0.3.0"

Dies sollte Ihr Problem für nicht finden, die Oracle-Treiber für Grails-Anwendung

lösen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top