Oracle JDBC ojdbc6 Jar як залежність Maven


103

Я, здається, не можу змусити Мевена зв'язати файл ojdbc6.jar у файл війни мого проекту. У мене це працює в файлі POM, коли вказується залежність безпосередньо для інструментів сплячого режиму. Але він не буде в комплекті з файлом війни проекту, і тому мій проект не працюватиме на Tomcat.

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

Знайдіть драйвер Oracle JDBC у сховищі Maven

Зовсім недавно я робив наступне:

  1. Завантажте файл банку на мою машину

  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доступний у вашому локальному сховищі у потрібній папці?
Рагурам

1
Файл jar ніколи не може бути скопійований у сховище. Лише купа файлів, на які здається, що вони посилаються. Чи потрібно називати файл саме таким? Це просто ojdbc6.jar в моєму каталозі lib.
Марво

15
Хм! тому mvn install:install-fileне спрацювало. Вам слід вказати абсолютне місце розташування ojdbc6.jarабо запустити команду з папки, яка містить її. Ім'я файлу не є проблемою. Ви можете запустити -Xпрапор, щоб ви могли налагоджувати інформацію.
Рагурам

Чи є вихід під час запуску 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>

Приклад граалів:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'

3
Зрештою, це ми і зробили. Ми створили тут сховище, і всі наші проекти зараз його використовують. Я думаю, що корисно знати, як робити і те, і інше.
Марво

3
Чи законний цей сховище lds.org? Відповідно до цієї відповіді це незаконне: stackoverflow.com/a/1074971/1415732
Alden

2
Цікаво, якби я встановив залежність до свого сховища компанії, чи було б це також незаконним? Або лише публічні репости є незаконними? Виною Oracle є те, що вони не мають публічного сховища Maven для своїх бібліотек. Я вважаю за краще, щоб хтось поділився цією бібліотекою у своєму сховищі (і це доступно).
Ондрей Квасновський

3
Ондрей: На мій погляд, це незаконно, лише якщо сховище є загальнодоступним. Моя компанія приймає ojdbc в приватному ревіні Maven (артефабричний) саме так, як ви пропонуєте.
Рей Майєрс

3
Звичайно, «краще» додати якусь довільну репо до свого проекту, так. Ого, це неправильно на багатьох рівнях
zb226

41

Для тих, хто читає цю публікацію в майбутньому, вам не потрібно буде вносити компакт-диски в каталог, де знаходиться банка. Ось що вам потрібно зробити -

Перейдіть у папку проекту, звідки ви можете запустити команди 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>

3
Лише зауваження: Після виконання цих кроків у мене все ще була така ж помилка в затемненні, поки я не виконав Maven > Update Project. Тоді все спрацювало прекрасно. Цей крок може бути очевидним, але я подумав, що додам його.
користувач12893298320392

2
... додати до "привіт майбутній читацький пост". це не вдалося запустити панель повноважень, але працювала, як очікувалося, запуск звичайної Windows CMD-оболонки. Ніякої повноваження для вас!
phareim

Для людей, які намагаються це зробити на вікнах, поради phareim - це золото. У мене це працює на Windows 7 під управлінням Maven 3.3.3, ввівши команду mvn у командному рядку. powerhell продовжував кидати помилку "пом не знайдено".
Квест Монгер

Згаданий порядок важливий. Я додав залежність спочатку, а потім запустив команду mvn intsall, помилка не зникала. Спробувавши видалити залежність, збережіть, а потім знову додайте її та збережіть. Усі помилки вирішені (за умови, що у вашому проекті встановлено t "будувати автоматично")
Kailas

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

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

  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

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


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 та вставте туди завантажений файл jardc jar, Сервер автоматично вибере це.


-1

Водії Oracle JDBC та інші супровідні банки доступні на Central Maven. Ми пропонуємо використовувати офіційні підтримувані версії JDBC Oracle з 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 Central Керівництво для більш докладної інформації.

Рекомендується використовувати останню версію. Перевірте FAQ для сумісності JDK.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.