ojdbc8 ojdbc14 for dependency 12c java maven jdbc maven-2 mvn-repo

java - ojdbc14 - Encuentra el controlador Oracle JDBC en el repositorio Maven



oracle jdbc driver java maven (16)

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

<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.3.0</version> </dependency>

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

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

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


1. ¿Cómo encuentro un repositorio (si lo hay) que contenga este artefacto?

Todos los controladores JDBC de la base de datos Oracle se distribuyen según el Acuerdo de licencia de OTN .

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

Tú quizás no:
...
- Distribuir los programas a menos que se acompañen con sus aplicaciones;
...

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

Añadiendo la dependencia:

<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.3.0</version> </dependency>

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

... <licenses> <license> <name>Oracle Technology Network Development and Distribution License Terms</name> <url>http://www.oracle.com/technology/software/htdocs/distlic.html</url> </license> </licenses> ...

que le informa sobre la licencia OTN.

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

Para hacer que funcione la dependencia anterior, estoy de acuerdo con quien le sugirió que instale manualmente el jar en su repositorio 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 licencia anterior no limita solo donde no puede encontrar el archivo JDBC, sino que también limita donde lo instala.

De hecho, su repositorio 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 una Violación del Acuerdo de Licencia OTN .

Además, creo que debería evitar instalar el jar de JDBC en el administrador de repositorio de su empresa (como Artifactory o Nexus ) como un solo artefacto, ya que si se instalara todavía se distribuiría solo, incluso si solo lo hacen las personas de su organización, y esto representa una violación del Acuerdo de Licencia OTN .



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

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

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

<groupId>com.oracle.weblogic</groupId> <artifactId>ojdbc6</artifactId> <version>12.1.2-0-0</version>


Descarga el jar y colócalo en tu proyecto src/lib . Ahora puedes usar el plugin de instalador maven.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <id>install-oracle-jdbc</id> <goals> <goal>install-file</goal> </goals> <phase>clean</phase> <configuration> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0</version> <packaging>jar</packaging> <generatePom>true</generatePom> <createChecksum>true</createChecksum> <file>${project.basedir}/src/lib/ojdbc6.jar</file> </configuration> </execution> </executions> </plugin>

Ahora solo tiene que ejecutar mvn clean una vez y la mvn clean oracle está instalada en su repositorio local de maven.



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

<dependency org="oracle" name="ojdbc14" rev="10.2.0.2" conf="*->default"/>

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

<dependency> <groupId>oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.2</version> </dependency>

Tenga en cuenta que defino http://download.java.net/maven/2/ y http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext] como repositorios externos maven2 en mi configuración de hiedra.



Intenta con:

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


Oracle ahora está exponiendo un repositorio de Maven en maven.oracle.com. Sin embargo, debe estar autenticado.

Consulte 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 debería estar disponible en las siguientes coordenadas:

<groupId>com.oracle.weblogic</groupId> <artifactId>ojdbc7</artifactId> <version>12.1.3-0-0</version> <packaging>jar</packaging>


Por el motivo que sea, no pude hacer funcionar ninguna de las soluciones anteriores. (Todavía no puedo.)

Lo que hice en su lugar fue incluir el frasco en mi proyecto (blech) y luego crear una dependencia de "sistema" que indique la ruta hacia el frasco. Probablemente no sea la forma CORRECTA de hacerlo, pero funciona. Y elimina la necesidad de que los otros desarrolladores del equipo (o el tipo que configura el servidor de compilación) coloquen el jar en sus repositorios locales.

ACTUALIZACIÓN : esta solución me funciona cuando ejecuto las herramientas de Hibernate. Sin embargo, NO parece funcionar para construir el archivo WAR. 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í (se llame como se llame el jar).

3) Crea una dependencia que se parece a esto:

<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc</artifactId> <version>14</version> <scope>system</scope> <systemPath>${basedir}/lib/ojdbc6.jar</systemPath> <!-- must match file name --> </dependency>

Feo, pero funciona para mi.

Para incluir los archivos en el archivo war, agregue lo siguiente a su pom

<build> <finalName>MyAppName</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webResources> <resource> <directory>${basedir}/src/main/java</directory> <targetPath>WEB-INF/classes</targetPath> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.css</include> <include>**/*.html</include> </includes> </resource> <resource> <directory>${basedir}/lib</directory> <targetPath>WEB-INF/lib</targetPath> <includes> <include>**/*.jar</include> </includes> </resource> </webResources> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>


Puede encontrar un proyecto de muestra simple de Github para usar un controlador JDBC de Oracle en el proyecto Maven here .

Puede encontrar todas las explicaciones para su integración continua + una muestra y ejecutarlas en Travis-CI.

here


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


Realizo envíos de código abierto bajo LGPLv2 e incluso después de varias conversaciones por correo electrónico con Oracle, no estaban claros si se me permitió enviar su controlador JDBC binario con mi distribución. El problema relacionado con si mi licencia era compatible con sus términos de OTN, por lo que sugirieron que no tenía permiso para enviar el controlador. Presumiblemente relacionado con esta parte.

(b) distribuir los programas con aplicaciones que usted haya desarrollado a sus clientes, siempre que cada uno de los licenciatarios acepte los términos de la licencia de acuerdo con los términos de este Acuerdo

Por lo tanto, incluso si logra publicar el controlador legalmente en su repositorio exclusivo / local de Maven, todavía existe la restricción de lo que tiene permitido hacer con ese artefacto. Parece absurdo que incluso si envío su controlador en formato binario junto con el archivo de licencia OTN completo, todavía no puedo usarlo y debo obligar a mis usuarios a descargar manualmente el controlador Oracle y colocarlo en la ruta de mi biblioteca antes de que puedan usar mi software.


Resuelto

  • Por favor, haga los siguientes ajustes para resolver el error.

Este repositorio debe estar habilitado para encontrar dependencias de Oracle 10.0.3.0 (esta configuración debe realizarse en Buildconfig.groovy grails.project.dependency.resolver = "ivy" // o ivy

Utilice también la siguiente configuración para el tiempo de compilación Descarga del controlador Oracle

tiempo de ejecución "com.oracle:ojdbc:10.2.0.3.0"

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


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


¿Cómo encuentro un repositorio (si existe) que contenga este artefacto?

Desafortunadamente, debido a la licencia binaria, no hay un repositorio público con Oracle Driver JAR. Esto sucede con muchas dependencias, pero no es culpa de Maven. Si encuentra un repositorio 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 pom en el repositorio de Maven Central . Solo échale un vistazo, contiene la información Maven preferida del proveedor:

<groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.3.0</version>

... 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 JAR, simplemente agréguelo al repositorio de su computadora con (tenga en cuenta que extraje groupId, artifactId y la versión de 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 repositorio local de Maven, esta guía podría ser útil para cargar el JAR allí.