Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

Обновить:Это решение работает у меня, когда я запускаю 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>

Уродливый, но мне подходит.

Чтобы включить файлы в файл 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>

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

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>

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

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

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

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

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

Все Драйверы JDBC базы данных Oracle Database распространяются в соответствии с Лицензионное соглашение 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 только, и в этом пом вы можете прочитать:

...
<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 использовал его?

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

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

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

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

<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].[внутр.] как внешние репозитории maven2 в моих настройках ivy.

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

Некоторые продукты 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>

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

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

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

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

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

Вы можете сделать то же самое с maven.pom.xml и баночка имеются в наличии (http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/).

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

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

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

ДЕМОНСТРАЦИЯ

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

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

РЕШАЕМАЯ

  • Пожалуйста, выполните следующие настройки, чтобы устранить ошибку

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

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

среда выполнения "com.oracle:ojdbc:10.2.0.3.0"

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


Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top