it-roy-ru.com

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

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

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

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

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

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

263
rperez

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

К сожалению, из-за бинарной лицензии нет общедоступного репозитория с Oracle Driver 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 и 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.

392
victor hugo

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

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

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

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

2) Скопируйте туда файл ojdbc6.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>
47
Marvo

Загрузите флягу и поместите ее в свой проект 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 Oracle будет установлена ​​в вашем локальном хранилище maven.

28
Peter Enis

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

Попробуйте с:

<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

Драйвер 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

15
Bienvenido David

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

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

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

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

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

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

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

(или любая более поздняя версия) заставляет 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 использовал его?

Чтобы заставить вышеуказанную зависимость работать, я согласен с victor hugo , который предлагал вам здесь вручную установить jar в локальный репозиторий 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.

14
taringamberini

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

12
Michael Munsey

До сих пор невозможно использовать репозитории 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/[organisation] /[module]/[revision]/[artifact]-[revision].[ext] в качестве внешних репозиториев maven2 на моих настройках плюща.

6
tugcem

Хорошие новости всем! Наконец, мы можем использовать официальный репозиторий Oracle: https://blogs.Oracle.com/dev2dev/get-Oracle-jdbc-drivers-and-ucp-from-Oracle-maven-repository-without-ides

3
Vladimir Chervanev

Некоторые продукты Oracle поддерживают публикацию артефактов maven в локальном хранилище. В продуктах есть каталог плагинов/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>
2
eckes

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

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

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

1
Craig

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

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

Существует один репо, который обеспечивает банку. В SBT добавьте преобразователь, похожий на этот: "Oracle driver repo" в " http://dist.codehaus.org/mule/dependencies/maven2 "

и зависимость: "Oracle"% "ojdbc14"% "10.2.0.2"

Вы можете сделать то же самое с Maven. Доступны pom.xml и jar ( http://dist.codehaus.org/mule/dependencies/maven2/Oracle/ojdbc14/10.2.0.2/ ).

0
yǝsʞǝlA

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

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

DEMO

0
sgrillon

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

0
Zafrullah Syed