Найти драйвер Oracle JDBC в репозитории Maven

Я хочу добавить драйвер oracle jdbc в мой проект как зависимость (область выполнения) - ojdbc14. На сайте MVNrepository зависимость от POM:

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

Конечно, это не работает, поскольку оно не находится в центральном репозитории, используемом maven. 2 вопроса:

  • Как найти репозиторий (если есть), содержащий этот артефакт?

  • Как добавить его так, чтобы Maven использовал его?

Ответ 1

Как найти репозиторий (если есть), содержащий этот артефакт?

К сожалению, из-за двоичной лицензии нет публичного репозитория с Oracle JAR. Это происходит со многими зависимостями, но это не ошибка Maven. Если вам удастся найти публичный репозиторий, содержащий JAR, вы можете быть уверены, что это незаконно.

Как добавить его так, чтобы Maven использовал его?

Некоторые JAR, которые не могут быть добавлены из-за лицензионных причин, имеют запись pom в Maven Central repo. Просто проверьте это, он содержит информацию о владельце поставщика Maven:

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

... и URL-адрес для загрузки файла, который в этом случае http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html.

Как только вы загрузите JAR, просто добавьте его в свой репозиторий компьютера (обратите внимание, что я вытащил groupId, artifactId и версию из POM):

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

Последний параметр для создания POM избавит вас от предупреждений pom.xml

Если ваша команда имеет локальный репозиторий Maven это руководство, возможно, будет полезно загрузить там JAR.

Ответ 2

По какой-то причине я не мог заставить любое из вышеперечисленных решений работать. (Все еще не может.)

Вместо этого я должен был включить банку в свой проект (blech), а затем создать для него "системную" зависимость, которая указывает путь к банке. Вероятно, это не правильный способ сделать это, но он работает. И это устраняет необходимость в том, чтобы другие разработчики в команде (или парень настраивал сервер сборки) помещали банку в свои локальные репозитории.

UPDATE. Это решение работает для меня, когда я запускаю Hibernate Tools. Однако он НЕ работает для создания файла WAR. Он не включает файл ojdbc6.jar в целевой файл WAR.

1) Создайте в корневом каталоге ваш проект под названием lib.

2) Скопируйте файл ojdbc6.jar там (независимо от того, что вызывается jar.)

3) Создайте зависимость, которая выглядит примерно так:

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

Уродливо, но работает для меня.

Чтобы включить файлы в военный файл, добавьте следующее к вашему 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>

Ответ 3

Загрузите банку и поместите ее в свой проект src/lib. Теперь вы можете использовать плагин установки maven.

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

Теперь вам нужно только выполнить mvn clean один раз и установить oracle lib в локальный репозиторий maven.

Ответ 4

В настоящее время Oracle демонстрирует репозиторий maven на maven.oracle.com Однако вам нужно пройти аутентификацию.

См. https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle

Согласно комментариям в блоге, драйвер ojdbc должен быть доступен в следующих координатах:

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

Ответ 5

Драйвер JDBC для Oracle теперь доступен в репозитории Oracle Maven (не в Central).

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

Репозиторий Oracle Maven требует регистрации пользователя. Инструкции можно найти в:

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

Обновление 2019-10-03

Я заметил, что Spring Boot теперь использует драйвер Oracle JDBC из Maven Central.

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc10</artifactId>
    <version>19.3.0.0</version>
</dependency>

Для пользователей Gradle:

implementation 'com.oracle.ojdbc:ojdbc10:19.3.0.0'

Нет необходимости в регистрации пользователя.

Ответ 6

Попробуйте:

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

Ответ 7

1. Как мне найти хранилище (если есть), содержащее этот артефакт?

Поскольку DavidS прокомментировал строку, которую я цитировал в то время, когда я отвечал, больше не присутствует в текущем (на момент написания сейчас) соглашении с Лицензионным соглашением OTN, которое я связал. Рассматривайте этот ответ только для более старой версии артефакта, например 10.2.0.3.0 и тому подобного.

Все драйверы Oracle Database JDBC распространяются в соответствии с лицензионным соглашением OTN.

Если вы прочитали лицензионное соглашение OTN, вы найдете этот срок лицензии:

Вы не можете:
...
- распространять программы, если они не сопровождаются вашими приложениями;
...

поэтому, почему вы не можете найти jar драйвера в любом общедоступном репозитории Maven, потому что он будет распространяться один, и если это произойдет, это будет нарушением лицензии.

Добавление зависимости:

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

(или любая более поздняя версия) make Maven загружает только ojdbc14-10.2.0.3.0.pom, и в этом pom вы можете прочитать:

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

которая информирует вас о лицензии OTN.

2. Как мне добавить его, чтобы Maven использовал его?

Для того, чтобы вышеуказанные работы с зависимостями Я согласен с Виктором Гюго, которые предлагали вам здесь, чтобы вручную установить банку в локальный репозиторий Maven (.m2 каталога), выполнив:

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

но я хочу добавить, что срок действия лицензии выше не ограничивает только место, где вы не можете найти JDBC jar, но также ограничивает место его установки!

Фактически ваш локальный репозиторий Maven должен быть закрытым, а не общим, потому что если бы он был общим, то это был бы своего рода дистрибутив, в котором jar распространяется сам по себе, даже если небольшая группа людей входит в вашу локальную сеть, и это представляет собой Нарушение лицензионного соглашения OTN.

Более того, я думаю, что вам следует избегать установки jar JDBC в менеджере хранилища вашей корпорации (например, в Artifactory или Nexus) как единый артефакт, потому что, если он был установлен, он все равно будет распространяться один, даже если это будет происходить только для людей в вашей организации, и это представляет нарушение лицензионного соглашения OTN.

Ответ 8

Вы можете использовать Nexus для управления зависимостями сторонних разработчиков, а также зависимостями в стандартных хранилищах maven.

Ответ 9

До сих пор не удалось использовать репозитории maven. Я использую ivy в качестве инструмента управления зависимостями, но также использую репозитории maven2 ibiblio. И это работает для плюща:

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

Зависимость Maven2 может быть примерно такой:

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

Обратите внимание, что я определяю http://download.java.net/maven/2/ и http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [организация ]/[module]/[revision]/[artifact] - [revision]. [ext] в качестве внешних maven2-репозиций в настройках моего плюща.

Ответ 11

Некоторые продукты Oracle поддерживают публикацию артефактов maven в локальном репозитории. В продуктах есть каталог plugin/maven, который содержит описания, где можно найти эти артефакты и где их хранить. Существует плагин из Oracle, который фактически загрузит.

Смотрите: http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm

Одним из продуктов, который может отправить OJDBC таким образом, является WLS, он использует, однако, довольно странные координаты:

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

Ответ 12

Я поставляю openource под LGPLv2, и даже после нескольких разговоров по электронной почте с Oracle они не понимали, разрешено ли мне отправлять свой двоичный драйвер JDBC с моим дистрибутивом. Проблема связана с тем, совместима ли моя лицензия с их условиями OTN, поэтому они предположили, что мне не разрешено отправлять драйвер. Предположительно, связанный с этой частью

(b) распространять программы с приложениями, которые вы разработали для своих клиентов, при условии, что каждый такой лицензиар соглашается лицензировать условия, согласующиеся с условиями настоящего Соглашения.

Таким образом, даже если вам удастся опубликовать драйвер на законных основаниях в вашем эксклюзивном/локальном хранилище maven, все еще есть ограничение на то, что вам разрешено делать с этим артефактом. Кажется абсурдным, что даже если я отправляю свой драйвер в двоичной форме вместе с полным файлом лицензии OTN, я все равно не могу его использовать и должен заставить моих пользователей вручную загрузить драйвер Oracle и зайти в мой путь к библиотеке, прежде чем они смогут использовать мое программное обеспечение.

Ответ 14

Если вы используете Netbeans, перейдите в Dependencies и вручную установите артефакт. Найдите загруженный файл .jar и сделайте его. чистая сборка решит любые проблемы.

Ответ 15

Вы можете найти простой пример проекта Github для использования драйвера JDBC Oracle в Maven Project здесь.

Вы можете найти все объяснения для вашей непрерывной интеграции + пример и работать на Travis-CI.

DEMO

Ответ 16

Для зависимости

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

Пытаться

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

Ответ 17

В моем случае это работает для меня после добавления этой зависимости от версии (10.2.0.4). После добавления этой версии 10.2.0.3.0 она не работает из-за отсутствия файла .jar в пути к хранилищу.

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

Ответ 18

Драйверы Oracle JDBC теперь доступны в Maven Central. Вот ссылка:

Драйверы Oracle JDBC - Maven Central

Статья разработчиков Oracle, объявляющая о доступности драйверов Oracle JDBC в Maven Central:

Oracle объявляет - драйверы Oracle JDBC доступны в Maven Central

Пример:

<!-- https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc10 -->
<dependency>
   <groupId>com.oracle.jdbc</groupId>
   <artifactId>ojdbc10</artifactId>
   <version>19.3.0.0</version>
</dependency>

Ответ 19

решаемые

  • Для устранения ошибки выполните следующие настройки:

Этот репозиторий должен быть включен для поиска зависимостей Oracle 10.0.3.0 (этот параметр необходимо выполнить в Buildconfig.groovy grails.project.dependency.resolver = "плющ" // или плющ

Также используйте следующий параметр для времени загрузки компилятора Oracle

runtime "com.oracle:ojdbc:10.2.0.3.0"

Это должно решить вашу проблему, если вы не найдете драйвер Oracle для приложения grails