Oracle JDBC ojdbc6 Jar como dependencia de Maven

103

Parece que no puedo conseguir que Maven agrupe el archivo ojdbc6.jar en el archivo war de mi proyecto. Lo tengo funcionando dentro del archivo POM al especificar una dependencia directamente para las herramientas de Hibernate. Pero no se incluirá con el archivo war del proyecto y, por lo tanto, mi proyecto no se ejecutará en Tomcat.

He probado todas las soluciones que pude encontrar en la red, incluidas las especificadas para esta pregunta aquí:

Encuentre el controlador Oracle JDBC en el repositorio de Maven

Más recientemente, hice lo siguiente:

  1. Descarga el archivo jar a mi máquina

  2. Ejecute el siguiente comando para instalar el jar en mi repositorio local:

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

    (También probé todo tipo de variantes de ese comando).

  3. Finalmente, puse la dependencia en mi archivo pom:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. Ejecuto una compilación limpia, pero falla:

    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]

¿Por qué no funciona esto? Estoy listo para tirar piezas costosas de computadora por la habitación. Esto ha hecho perder mucho tiempo. (Gracias, Oracle. ¿Cuánto le pagamos de nuevo?)

¿Es porque estoy en una Mac, quizás?

Marvo
fuente
6
¿Puede comprobar si el archivo ojdbc6-11.2.0.3.jarestá disponible en su repositorio local en la carpeta correcta?
Raghuram
1
Parece que el archivo jar nunca se copia en el repositorio. Solo un montón de archivos que parecen hacer referencia a él. ¿El archivo debe llamarse exactamente así? Es solo ojdbc6.jar en mi directorio lib.
Marvo
15
¡Hmm! por lo que mvn install:install-fileno ha funcionado. Debe dar la ubicación absoluta ojdbc6.jaro ejecutar el comando desde la carpeta que lo contiene. El nombre del archivo no es un problema. Puede ejecutar con una -Xbandera para poder depurar información.
Raghuram
¿Hay alguna salida cuando corres install-file? Maven debería decirle dónde instala el archivo o si hubo algún error.
nwinkler
1
Como nota no relacionada: debería considerar el uso de un espejo de repositorio (algo como Nexus, Artifactory, Archiva, ...). Podrías cargar el archivo allí y estaría disponible no solo para ti, sino también para todos los demás que usen el mismo espejo.
nwinkler

Respuestas:

136

Es mejor agregar un nuevo repositorio de Maven (preferiblemente usando su propio artefacto) a su proyecto en lugar de instalarlo en su repositorio local.

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

Ejemplo de Griales:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'
Ondrej Kvasnovsky
fuente
3
Al final eso es lo que hicimos. Configuramos un repositorio aquí, y todos nuestros proyectos ahora lo usan. Sin embargo, creo que es útil saber cómo hacer ambas cosas.
Marvo
3
¿Es legal ese repositorio de lds.org? De acuerdo con esta respuesta, es ilegal: stackoverflow.com/a/1074971/1415732
Alden
2
Me pregunto, si instalara la dependencia en el repositorio de mi empresa, ¿sería ilegal también? ¿O solo los repos públicos son ilegales? Es culpa de Oracle que no tengan un repositorio público de Maven para sus bibliotecas. Preferiría que alguien comparta esa biblioteca en su repositorio (y es constantemente accesible).
Ondrej Kvasnovsky
3
Ondrej: Según tengo entendido, solo es ilegal si el repositorio es público. Mi empresa aloja ojdbc en un repositorio privado de maven (artefacto) de la manera que usted sugiere.
Ray Myers
3
Por supuesto que es "mejor" agregar algún repositorio arbitrario a su proyecto, sí. Wow, esto está mal en muchos niveles
zb226
41

Para cualquiera que lea esta publicación en el futuro, no es necesario que acceda al directorio donde está el jar. Aquí está lo que tú necesitas hacer -

Vaya a la carpeta de su proyecto desde donde puede ejecutar los comandos de maven (cuando haga un ls -ltr en esta carpeta, debería ver pom.xml)

Hacer esto -

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

Una vez hecho esto, puede agregar la dependencia en su pom.xml, algo como esto:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
Rickygrimes
fuente
3
Solo una nota: después de seguir estos pasos, todavía tenía el mismo error en eclipse hasta que realicé Maven > Update Project. Entonces todo funcionó a la perfección. Este paso puede ser obvio, pero pensé que lo agregaría.
user12893298320392
2
... para agregar a la "publicación de hola futuro lector". esto falló al ejecutar powershell, pero funcionó como se esperaba ejecutando el CMD-shell de Windows ordinario. ¡No hay powershell para ti!
Phareim
para las personas que intentan hacer esto en Windows, el consejo de Phareim es oro. Conseguí que esto funcionara en Windows 7 con maven 3.3.3 escribiendo el comando mvn en el símbolo del sistema. powershell siguió arrojando el error 'pom no encontrado'.
Quest Monger
El orden mencionado es importante. Primero agregué la dependencia y luego ejecuté el comando mvn intsall. El error no desapareció. Intenté eliminar la dependencia, guardar y luego agregarla nuevamente y guardar. Todos los errores resueltos (siempre que su proyecto esté configurado para "compilar automáticamente")
Kailas
24

Raghuram proporcionó la respuesta correcta en la sección de comentarios a mi pregunta original.

Por alguna razón, señalar "mvn install" a una ruta completa del archivo físico ojdbc6.jar no funcionó para mí. (O lo fallé repetidamente al ejecutar el comando, pero no se emitieron errores).

cd-ing en el directorio donde guardo ojdb6.jar y ejecutar el comando desde allí funcionó la primera vez.

Si a Raghuram le gustaría responder esta pregunta, aceptaré su respuesta en su lugar. ¡Gracias a todos!

Marvo
fuente
1
Gracias @Raghuram y Marvo
spiderman
7
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

para resolver el problema de ORACLE JAR con la aplicación Spring,

Oracle JDBC ojdbc6 Jar como dependencia de Maven

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`
Sushil Gulhane
fuente
Maven es muy exigente con las versiones que no siempre son fáciles de adivinar. Buen comentario de que la versión es 11.2.0 no 11.2.0.3
Michael Shopsen
5

Primero debe descargar el jar particular del sitio de Oracle (ojdbc.jar versión 11.2.0.3)

si lo descarga en C: \ carpeta de archivos

vaya a ese directorio en el indicador de cmd y proporcione el siguiente comando. Instalará la dependencia. Luego puede construir su proyecto.

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true
Shermi
fuente
2

Después de ejecutar

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

verifique su carpeta de repositorio .m2 (/com/oracle/ojdbc6/11.2.0.3) para ver si existe ojdbc6.jar. De lo contrario, verifique la configuración de su repositorio maven en $ M2_HOME / conf / settings.xml

Jayen Chondigara
fuente
2

La siguiente configuración funcionó para mí. Consulte este enlace para obtener más detalles.

<dependency>
 <groupId>com.oracle.jdbc</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.0.2</version>
</dependency>
Barani r
fuente
Eso es nuevo desde que hice la pregunta. ¡Agradable!
Marvo
2

Dado que Oracle es el producto con licencia, existe un problema al agregar la dependencia de maven directamente. Para agregar cualquier versión de ojdbc.jar, los siguientes 2 pasos podrían ser suficientes.

  1. Ejecute el siguiente comando para instalar ojdbc.jar en el repositorio local de 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

Esto agregará la dependencia al repositorio local.

  1. Ahora, agregue la dependencia en el archivo pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>
Mohamed
fuente
1

Seguí el siguiente comando que funcionó:

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

Después de la instalación, compruebe que jar esté instalado correctamente en su M2_repo.

kuser699
fuente
1

Intenté usar la dependencia sin la etiqueta de versión y funcionó bien para mí.

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
</dependency>
Veswanth
fuente
0

Agregue la siguiente dependencia en pom.xml

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>oracle</artifactId>
    <version>10.2.0.2.0</version>
</dependency>
Kiran P Fegade
fuente
0

Vaya a la unidad C-> usuario-> PcName-> busque .m2 y pegue el archivo jar ojdbc descargado allí, el servidor lo seleccionará automáticamente.

Hassan Ahmed
fuente
-1

Los controladores Oracle JDBC y otros Jars complementarios están disponibles en Central Maven. Sugerimos utilizar las versiones oficiales de Oracle JDBC compatibles de 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 y 19.7.0.0. Están disponibles en Central Maven Repository . Consulte la Guía central de Maven para obtener más detalles.

Se recomienda utilizar la última versión. Consulte las preguntas frecuentes sobre la compatibilidad con JDK.

Nirmala
fuente