Oracle JDBC ojdbc6 Jar как зависимость Maven

103

Я не могу заставить Maven связать файл ojdbc6.jar с файлом war моего проекта. У меня он работает в файле POM при указании зависимости непосредственно для инструментов Hibernate. Но он не будет связан с военным файлом проекта, и поэтому мой проект не будет работать на Tomcat.

Я пробовал все решения, которые могу найти в сети, включая те, которые указаны для этого вопроса здесь:

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

Совсем недавно я сделал следующее:

  1. Загрузите файл jar на мою машину

  2. Выполните следующую команду, чтобы установить банку в мой локальный репозиторий:

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

    (Я тоже пробовал все варианты этой команды.)

  3. Наконец, я поместил зависимость в свой файл pom:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
    
  4. Я запускаю чистую сборку, но не получается:

    mvn -U clean package
    
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building jazztwo 0.0.1
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.jar
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.700s
    [INFO] Finished at: Tue Mar 27 15:06:14 PDT 2012
    [INFO] Final Memory: 3M/81M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project jazztwo: Could not resolve dependencies for project edu.berkeley:jazztwo:war:0.0.1: Could not find artifact com.oracle:ojdbc6:jar:11.2.0.3 in central (http://repo1.maven.org/maven2) -> [Help 1]
    

Почему это не работает? Я готов разбросать по комнате дорогие компьютерные детали. На это потрачено столько времени. (Спасибо, Oracle. Сколько мы вам снова заплатили?)

Может быть, потому, что я на Mac?

Марво
источник
6
Можете ли вы проверить, ojdbc6-11.2.0.3.jarдоступен ли файл в вашем локальном репозитории в правильной папке?
Raghuram
1
Кажется, что файл jar никогда не копируется в репозиторий. Просто куча файлов, которые ссылаются на него. Должен ли файл называться именно так? Это просто ojdbc6.jar в моем каталоге lib.
Marvo
15
Хм! так mvn install:install-fileчто не сработало. Вы должны указать абсолютное местоположение ojdbc6.jarили запустить команду из папки, которая ее содержит. Имя файла не проблема. Вы можете запустить с -Xфлагом, чтобы вы могли отлаживать информацию.
Raghuram
Есть ли выход при запуске install-file? Maven должен сообщить вам, куда он устанавливает файл и были ли ошибки.
nwinkler
1
В качестве несвязанного примечания: вам следует изучить использование зеркала репозитория (что-то вроде Nexus, Artifactory, Archiva, ...). Вы можете загрузить файл туда, и он будет доступен не только вам, но и всем остальным, использующим то же зеркало.
nwinkler

Ответы:

136

Лучше добавить новый репозиторий Maven (желательно с использованием вашего собственного артефакта) в свой проект, а не устанавливать его в локальный репозиторий.

Синтаксис Maven:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>
... 
<repositories>
    <repository>
      <id>codelds</id>
      <url>https://code.lds.org/nexus/content/groups/main-repo</url>
    </repository>
  </repositories>

Пример Grails:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'
Ондрей Квасновский
источник
3
В конечном итоге это то, что мы сделали. Мы создали здесь репозиторий, и теперь все наши проекты его используют. Однако я думаю, что полезно знать, как делать и то, и другое.
Marvo
3
Законно ли это хранилище lds.org? Согласно этому ответу это незаконно: stackoverflow.com/a/1074971/1415732
Олден,
2
Интересно, если бы я установил зависимость в репозиторий моей компании, было бы это тоже незаконно? Или только публичные репо незаконны? Ошибка Oracle в том, что у них нет публичного репозитория Maven для своих библиотек. Я был бы рад, что кто-то поделится этой библиотекой в ​​своем репозитории (и она постоянно доступна).
Ондрей Квасновский
3
Ондрей: Насколько я понимаю, это незаконно, только если репозиторий публичный. Моя компания размещает ojdbc в частном репозитории maven (artifactory) именно так, как вы предлагаете.
Рэй Майерс
3
Конечно, «лучше» добавить в проект произвольное репо, да. Вау, это неправильно на многих уровнях
zb226 08
41

Для тех, кто читает этот пост в будущем, вам не нужно переходить cd в каталог, в котором находится jar. Вот что вам нужно сделать -

Перейдите в папку своего проекта, откуда вы можете запускать команды maven (когда вы выполняете ls -ltr в этой папке, вы должны увидеть pom.xml)

Сделай это -

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=<Path where the jar is, example downloads>/ojdbc6.jar -DgeneratePom=true

Как только это будет сделано, вы можете добавить зависимость в свой pom.xml, примерно так:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
Rickygrimes
источник
3
Просто примечание: после выполнения этих шагов у меня все еще была та же ошибка в eclipse, пока я не выполнил Maven > Update Project. Потом все прекрасно заработало. Этот шаг может быть очевиден, но я решил, что добавлю его.
user12893298320392
2
... добавить в "привет будущий читатель". это не удалось запустить PowerShell, но работало, как ожидалось, с обычной CMD-оболочкой Windows. Никакого PowerShell для вас!
phareim
для людей, пытающихся сделать это на окнах, совет фареима - золото. Я получил это, работая в Windows 7 с maven 3.3.3, набрав команду mvn в командной строке. Powershell продолжал выдавать ошибку «pom not found».
Quest Monger
Упомянутый порядок важен. Сначала я добавил зависимость, а затем запустил команду mvn intsall. Ошибка не исчезла. Пытался удалить зависимость, сохранить, а затем снова добавить и сохранить. Все ошибки решены ( при условии , проект набора т «сборки автоматически»)
Кайлас
24

Правильный ответ был предоставлен Рагурамом в разделе комментариев к моему первоначальному вопросу.

По какой-то причине указание "mvn install" на полный путь к физическому файлу ojdbc6.jar у меня не сработало. (Или я постоянно постоянно ошибался при запуске команды, но ошибок не было.)

cd-ing в каталог, где я храню ojdb6.jar, и запуск команды оттуда сработал в первый раз.

Если Рагурам захочет ответить на этот вопрос, я приму его ответ. Спасибо всем!

Марво
источник
1
Спасибо @Raghuram и Marvo
паук
7
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

чтобы решить проблему ORACLE JAR с приложением Spring,

Oracle JDBC ojdbc6 Jar как зависимость Maven

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`
Сушил Гюльхане
источник
Maven очень требователен к версиям, от которых не всегда легко догадаться. Хороший улов, что версия 11.2.0, а не 11.2.0.3
Майкл Шопсин
5

Сначала вам нужно загрузить конкретную банку с сайта Oracle (ojdbc.jar версии 11.2.0.3)

если вы загрузите его в C: \ filefolder

перейдите в этот каталог в командной строке cmd и введите следующую команду. Она установит зависимость. Затем вы можете построить свой проект.

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true
Шерми
источник
2

После выполнения

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

проверьте папку репозитория .m2 (/com/oracle/ojdbc6/11.2.0.3), чтобы узнать, существует ли ojdbc6.jar. Если нет, проверьте настройки репозитория maven в $ M2_HOME / conf / settings.xml

Джейен Чондигара
источник
2

Ниже конфиг работал у меня. Перейдите по этой ссылке для получения более подробной информации.

<dependency>
 <groupId>com.oracle.jdbc</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.0.2</version>
</dependency>
Барани р
источник
Это ново с тех пор, как я задал вопрос. Ницца!
Марво
2

Поскольку Oracle является лицензионным продуктом, существует проблема прямого добавления зависимости maven. Чтобы добавить любую версию ojdbc.jar, можно выполнить 2 шага ниже.

  1. Выполните приведенную ниже команду, чтобы установить ojdbc.jar в локальный репозиторий maven.
/opt/apache-maven/bin/mvn install:install-file
    -Dfile=<path-to-file>/ojdbc7.jar
    -DgroupId=com.oracle
    -DartifactId=ojdbc7
    -Dversion=12.1.0.1.0
    -Dpackaging=jar

Это добавит зависимость в локальный репозиторий.

  1. Теперь добавьте зависимость в файл pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>
Мохамед
источник
1

Я выполнил команду ниже, это сработало:

mvn install:install-file -Dfile=E:\JAVA\Spring\ojdbc14-10.2.0.4.0.jar\ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar

После установки убедитесь, что jar правильно установлен на вашем M2_repo.

kuser699
источник
1

Я пробовал использовать зависимость без тега версии, и у меня она отлично сработала.

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
</dependency>
Весвант
источник
0

Добавить следующую зависимость в pom.xml

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>oracle</artifactId>
    <version>10.2.0.2.0</version>
</dependency>
Киран П. Фегаде
источник
0

Перейдите на диск C-> user-> PcName-> find .m2 и вставьте туда загруженный файл jar ojdbc, сервер автоматически выберет это.

Хасан Ахмед
источник
-1

Драйверы Oracle JDBC и другие сопутствующие Jar-файлы доступны в Central Maven. Мы предлагаем использовать официальные поддерживаемые версии Oracle JDBC из 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 и 19.7.0.0. Они доступны в центральном репозитории Maven . Дополнительные сведения см. В руководстве Maven Central .

Рекомендуется использовать последнюю версию. Ознакомьтесь с FAQ для совместимости с JDK.

Нирмала
источник