Utilizar un jdbc de un repositorio

En blogs anteriores explicamos de manera general cómo construir una aplicación en Spring Boot que se conectare a una base de Oracle, procuramos redactar de manera detalla todos los elementos para ello; En los blogs pasados, con fines didácticos utilizamos un jdbc dentro de nuestro mismo proyecto, pero hoy vamos a cambiar eso, ahora vamos a utilizar el de un repositorio.

Gradle o Maven no son directamente un repositorio sino que usan uno o más de ellos para generar software, tampoco son gestores de paquetes porque un gestor de paquetes se encarga únicamente de instalar, eliminar o cambiar la versión de un paquete o dependencia. Gradle y Maven tienen por función principal el contruir o desplegar una aplicación manejando repositorios y dependencias para lograrlo.

Nexus es un repositorio desarrollado por Sonatype que permite crear un repositorio para maven, funciones limitadas de NPM, Nuget y YUM además de otras características en su versión 2 OSS. Para este ejemplo vamos a usar el repositorio de talanlabs en la siguiente liga http://nexus.talanlabs.com

En la liga anterior buscaremos el jar ojdbc y nos devolverá la información del Artifact:

Repository Path:
/com/oracle/ojdbc/6/ojdbc-6.jar
Uploaded by:
themouton
Size:
2.01 MB
Uploaded Date:
Thu Oct 15 2015 11:48:06 GMT-0500 (CDT)
Last Modified:
Thu Oct 15 2015 11:48:06 GMT-0500 (CDT)

Checksums SHA1
5b371965872f89ed74702ceec901b12f0074081e
MD5
a0a51c38bc9597692bae2a24febf68f1

Contained in Repositories
Releases

Para un repositorio Nexus todas las dependencias que están disponibles se encuentran en la ruta content/repositories y podemos usar los Artifacts que necesitemos de acuerdo a la información que nos devuelve el buscador. Si usamos gradle, nuestro archivo build.gradle podría verse como el siguiente:

buildscript {
	ext {
		springBootVersion = '2.1.1.RELEASE'
	}
	repositories {
		mavenCentral()
		maven { url "https://plugins.gradle.org/m2/" }
    	//maven {	url "http://nexus.talanlabs.com/content/repositories/releases/" }
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
		//classpath("com.oracle:ojdbc:6")
	}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'mx.chido'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
	mavenCentral()
	//maven {	url "http://nexus.talanlabs.com/content/repositories/releases/" }
}


dependencies {
	implementation('org.springframework.boot:spring-boot-starter-data-jpa')
	implementation('org.springframework.boot:spring-boot-starter-web')
	//implementation('com.oracle:ojdbc:6')
	testImplementation('com.h2database:h2')
	testImplementation('org.springframework.boot:spring-boot-starter-test')
}

Usar un repositorio tiene ventajas y desventajas (como todo en la vida) pero dentro de las ventajas podemos decir que reduce el peso de un proyecto si se piensa utilizar algún control de versiones como Git o SVN y se omiten del control de versiones todas las carpetas de librerías o dependencias y simplemente se administra lo que primordialmente nos interesa que es el código que nosotros mismos escribimos. Otra ventaja es que el build necesita menos código para agregar nuestro artifact, en este caso el ojdbc, a tareas que nosotros mismos definamos, como crear una imagen Docker por ejemplo. Una desventaja es que estamos sujetos a la seguridad y disponibilidad del repositorio que estamos consumiendo, aunque tenemos que decir que existen checksums y caché…

El consumir un repositorio es, desde nuestro punto de vista, una buena práctica que alivia divergencias en las versiones de las dependencias que cada programador del equipo utiliza, también reduce mucho el peso de un proyecto (si no nos crees es porque no conoces una carpeta llamada node_modules y se te olvido agregarla al .gitignore o fuiste muy valiente para borrar esa línea del archivo jaja).

Esperamos que ahora tengas ideas de cómo implementar esto en tus proyectos y optimizarlos con lo que acabas de aprender!

Saludos.

comments powered by Disqus