Найти драйвер 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 использовал его?

16 ответов


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

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

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

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

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

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


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

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

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

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>

загрузите банку и поместите ее в свой проект 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 lib установлен в вашем локальном репозитории 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. Как найти репозиторий (если таковой имеется), содержащий этот артефакт?

все драйверы JDBC базы данных Oracle это distribuited под лицензионное соглашение 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 использовал его?

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


можно использовать Nexus для управления зависимостями сторонних производителей, а также зависимостями в стандартных репозиториях 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].[ext] как внешние maven2 РЕПО на моих настройках плюща.


хорошие новости для всех! Наконец, мы можем использовать официальное РЕПО 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) распространять программы с приложениями, которые вы разработали для своих клиентов при условии, что каждый из них лицензиат соглашается с условиями лицензии в соответствии с условиями настоящего договор!--1-->

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


существует одно РЕПО, которое предоставляет банку. В SBT добавьте распознаватель, подобный этому: "Oracle driver repo "at"http://dist.codehaus.org/mule/dependencies/maven2"

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

вы можете сделать то же самое с Maven. ПФЛ.xml и jar доступны (http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/).


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


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

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

демо


решить

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

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

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

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

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