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:
¿Cómo encuentro un repository (si existe) que contiene este artefacto?
¿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:
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):
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.oracleojdbc14system${basedir}/lib/ojdbc6.jar
Feo, pero funciona para mí.
Para incluir los archivos en el archivo war agrega lo siguiente a tu pom
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.oracleojdbc1410.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 Termshttp://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:
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:
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.
Uno de los productos que pueden enviar OJDBC de esta manera es el WLS, pero utiliza coordenadas bastante extrañas:
com.oracle.weblogicojdbc612.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.
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