Encuentre el controlador Oracle JDBC en el repository Maven

Deseo agregar el controlador oracle jdbc a mi proyecto como dependencia (ámbito de tiempo de ejecución) – ojdbc14. En el sitio MVNrepository la dependencia para poner en el POM es:

 com.oracle ojdbc14 10.2.0.3.0  

por supuesto, esto no funciona, ya que no está en el repository central utilizado por maven. 2 preguntas:

  1. ¿Cómo encuentro un repository (si existe) que contiene este artefacto?

  2. ¿Cómo lo agrego para que Maven lo use?

¿Cómo encuentro un repository (si existe) que contiene este artefacto?

Desafortunadamente, debido a la licencia binaria, no existe un repository público con Oracle Driver JAR. Esto sucede con muchas dependencias pero no es culpa de Maven. Si encuentra un repository público que contiene el JAR, puede estar seguro de que es ilegal.

¿Cómo lo agrego para que Maven lo use?

Algunos JAR que no se pueden agregar debido a razones de licencia tienen una entrada principal en el repository de Maven Central . Solo compruébalo, contiene la información Maven preferida del vendedor:

 com.oracle ojdbc14 10.2.0.3.0 

… y la URL para descargar el archivo que en este caso es http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html .

Una vez que haya descargado el archivo JAR, simplemente agréguelo al repository de su computadora con (nota que extraje groupId, artifactId y la versión del POM):

 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 \ -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar -DgeneratePom=true 

El último parámetro para generar un POM lo salvará de las advertencias de pom.xml

Si su equipo tiene un repository local de Maven, esta guía puede ser útil para cargar el JAR allí.

Por alguna razón, no pude lograr que ninguna de las soluciones anteriores funcionara. (Todavía no puedo)

Lo que hice en cambio fue incluir el jar en mi proyecto (blech) y luego crear una dependencia de “sistema” para él que indica la ruta al jar. Probablemente no sea la forma correcta de hacerlo, pero funciona. Y elimina la necesidad de que los otros desarrolladores en el equipo (o el tipo que configura el servidor de comstackción) coloquen el contenedor en sus repositorys locales.

ACTUALIZACIÓN : Esta solución funciona para mí cuando ejecuto Hibernate Tools. No parece funcionar para construir el archivo WAR, sin embargo. No incluye el archivo ojdbc6.jar en el archivo WAR de destino.

1) Cree un directorio llamado “lib” en la raíz de su proyecto.

2) Copie el archivo ojdbc6.jar allí (cualquiera que sea el nombre del jar).

3) Crea una dependencia que se ve así:

  com.oracle ojdbc 14 system ${basedir}/lib/ojdbc6.jar   

Feo, pero funciona para mí.

Para incluir los archivos en el archivo war agrega lo siguiente a tu pom

  MyAppName   org.apache.maven.plugins maven-war-plugin    ${basedir}/src/main/java WEB-INF/classes  **/*.properties **/*.xml **/*.css **/*.html    ${basedir}/lib WEB-INF/lib  **/*.jar       maven-compiler-plugin  1.6 1.6     

Descargue el jar y colóquelo en su proyecto src/lib . Ahora puede usar el plugin Maven Installer.

  org.apache.maven.plugins maven-install-plugin 2.3.1   install-oracle-jdbc  install-file  clean  com.oracle ojdbc6 11.2.0 jar true true ${project.basedir}/src/lib/ojdbc6.jar     

Ahora solo tiene que ejecutar mvn clean una vez y el oracle lib está instalado en su repository maven local.

Oracle ahora está exponiendo un repository de maven en maven.oracle.com. Sin embargo, necesita ser autenticado.

Ver https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_and_the_oracle

De acuerdo con los comentarios en la publicación del blog, el controlador ojdbc debe estar disponible en las siguientes coordenadas:

 com.oracle.weblogic ojdbc7 12.1.3-0-0 jar 

Prueba con:

    codelds https://code.lds.org/nexus/content/groups/main-repo     com.oracle ojdbc6 11.2.0.3   

Oracle JDBC Driver ahora está disponible en Oracle Maven Repository (no en Central).

  com.oracle.jdbc ojdbc7 12.1.0.2  

El Oracle Maven Repository requiere un registro de usuario. Las instrucciones se pueden encontrar en:

https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without_ides

1. ¿Cómo encuentro un repository (si existe) que contiene este artefacto?

Todos los controladores JDBC de Oracle Database se distribuyen bajo el Acuerdo de licencia de OTN .

Si lee el Acuerdo de licencia de OTN, encontrará este término de licencia:

No deberias:

– distribuir los progtwigs a menos que estén acompañados con sus aplicaciones;

así que es por eso que no se puede encontrar el contenedor del controlador en ningún repository público de Maven, ya que se distribuiría solo, y si ocurriera, sería una violación de la licencia.

Agregar la dependencia:

  com.oracle ojdbc14 10.2.0.3.0  

(o cualquier versión posterior) haga que Maven descargue el ojdbc14-10.2.0.3.0.pom solamente, y en ese pom puede leer:

 ...   Oracle Technology Network Development and Distribution License Terms http://www.oracle.com/technology/software/htdocs/distlic.html   ... 

que le informa sobre la Licencia de OTN.

2. ¿Cómo lo agrego para que Maven lo use?

Para hacer que funcione la dependencia anterior, estoy de acuerdo con victor hugo, que le sugirió que instale el .m2 manualmente en el repository local de Maven (el directorio .m2 ) ejecutando:

 mvn install:install-file -Dfile={Path_to_your_ojdbc.jar} -DgroupId=com.oracle -DartifactId=ojdbc -Dversion=10.2.0.3.0 -Dpackaging=jar 

pero quiero agregar que el término de la licencia anterior no se limita solo a los lugares donde no se puede encontrar el contenedor JDBC, ¡sino que también limita dónde lo instalas!

De hecho, su repository local de Maven debe ser privado y no compartido porque si se compartiera, sería un tipo de distribución en la que el contenedor se distribuye solo, incluso si se trata de un pequeño grupo de personas en su red de área local, y esto representa un OTN Acuerdo de licencia violación .

Además, creo que debes evitar instalar el JDBC jar en el administrador de repositorys de tu corporación (como Artifactory o Nexus ) como un único artefacto, ya que si se instala, se distribuirá solo, incluso a personas de tu organización solamente, y esto representa una violación del Acuerdo de Licencia OTN .

Puede usar Nexus para administrar dependencias de terceros, así como dependencias en repositorys maven estándar.

Hasta ahora, no es posible usar repositorys maven. Estoy usando ivy como herramienta de administración de dependencias, pero también uso los repositorys ibiblio de maven2. Y esto está funcionando para la hiedra:

  

La dependencia de Maven2 podría ser algo así:

  oracle ojdbc14 10.2.0.2  

Tenga en cuenta que defino http://download.java.net/maven/2/ y http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/ [organization] / [module] / [ revisión] / [artefacto] – [revisión]. [ext] como repos externos de maven2 en mi configuración de hiedra.

¡Buenas noticias para todos! Finalmente, podemos utilizar el repository oficial de Oracle: https://blogs.oracle.com/dev2dev/get-oracle-jdbc-drivers-and-ucp-from-oracle-maven-repository-without-ides

Algunos productos de Oracle admiten la publicación de artefactos conocidos en un repository local. Los productos tienen un directorio plugin / maven que contiene descripciones donde encontrar esos artefactos y dónde almacenarlos. Hay un complemento de Oracle que realmente hará la carga.

Ver: http://docs.oracle.com/middleware/1212/core/MAVEN/config_maven.htm

Uno de los productos que pueden enviar OJDBC de esta manera es el WLS, pero utiliza coordenadas bastante extrañas:

 com.oracle.weblogic ojdbc6 12.1.2-0-0 

Envié opensource bajo LGPLv2 e incluso después de varias conversaciones por correo electrónico con Oracle no estaban claras si podía enviar su controlador binario JDBC con mi distribución. El problema se refería a si mi licencia era compatible con sus términos OTN, por lo que me sugirieron que no se me permitió enviar el controlador. Presumiblemente relacionado con esta parte

(b) para distribuir los progtwigs con las aplicaciones que haya desarrollado a sus clientes, siempre que cada uno de los licenciatarios acepte los términos de la licencia conforme a los términos de este Acuerdo.

Por lo tanto, incluso si logra publicar el controlador legalmente en su repository Maven exclusivo / local, aún existe la restricción de lo que se le permite hacer con ese artefacto. Parece absurdo que incluso si envío su controlador en formato binario junto con el archivo de licencia completo de OTN, todavía no pueda usarlo y obligue a mis usuarios a descargar manualmente el controlador de Oracle y a acceder a la ruta de mi biblioteca antes de que puedan usar mi software.

Hay un repository que proporciona el contenedor. En SBT, agregue un resolver similar a esto: “repo del controlador de Oracle” en ” http://dist.codehaus.org/mule/dependencies/maven2

y una dependencia: “oracle”% “ojdbc14″% “10.2.0.2”

Puedes hacer lo mismo con maven. pom.xml y jar están disponibles ( http://dist.codehaus.org/mule/dependencies/maven2/oracle/ojdbc14/10.2.0.2/ ).

Si está utilizando Netbeans, vaya a Dependencias e instale artefactos manualmente. Ubique su archivo .jar descargado y listo. la construcción limpia resolverá cualquier problema.

SOLUCIONADO

  • Por favor haga las siguientes configuraciones para resolver el error

Este repository debe estar habilitado para encontrar las dependencias de Oracle 10.0.3.0 (esta configuración debe hacerse en Buildconfig.groovy grails.project.dependency.resolver = “ivy” // o ivy

Utilice también la siguiente configuración para la descarga del controlador Oracle en tiempo de comstackción

tiempo de ejecución “com.oracle:ojdbc:10.2.0.3.0”

Esto debería resolver su problema por no encontrar el controlador de Oracle para la aplicación Grails