Вопрос-ответ

Find Oracle JDBC driver in Maven repository

Найти драйвер 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 вопроса:


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


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


Переведено автоматически
Ответ 1

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

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

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

Некоторые JAR, которые не могут быть добавлены по причинам лицензии, имеют запись pom в Центральном репозитории Maven. Просто ознакомьтесь с ним, он содержит предпочитаемую поставщиком информацию о 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 и version из 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

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

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

Регистрация пользователя не требуется.

Обновление 2020-03-02

Oracle теперь публикует драйверы под идентификатором группы com.oracle.database. Смотрите Ответ Энтони Акчиоли для получения дополнительной информации. Спасибо, Энтони.

Драйвер Oracle JDBC совместим с JDK6, JDK7 и JDK8

<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>

Драйвер Oracle JDBC совместим с JDK8, JDK9 и JDK11

<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>

Драйвер Oracle JDBC совместим с JDK10 и JDK11

<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.3.0.0</version>
</dependency>
Ответ 3

По какой-то причине я не смог заставить работать ни одно из вышеупомянутых решений. (До сих пор не могу.)

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

ОБНОВЛЕНИЕ: это решение работает у меня, когда я запускаю инструменты гибернации. Однако, похоже, оно НЕ работает для сборки файла 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>

Некрасиво, но у меня работает.

Чтобы включить файлы в файл war, добавьте в свой 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>
Ответ 4

Загрузите jar и поместите его в свой проект src/lib. Теперь вы можете использовать плагин 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>

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

java maven jdbc