El conocimiento es el nuevo dinero.
Aprender es la nueva manera en la que inviertes
Acceso Cursos

Gestión de Dependencias en la Arquitectura de Microservicios: Creación de su propio POM padre

· 2 min de lectura
Gestión de Dependencias en la Arquitectura de Microservicios: Creación de su propio POM padre

A menudo, en la arquitectura de microservicios, surgen problemas relacionados con la actualización de versiones de bibliotecas o la adición de las mismas.

Cuando se trabaja en un proyecto durante mucho tiempo, se puede encontrar que diferentes microservicios utilizan diferentes versiones de la misma biblioteca, y su actualización puede retrasarse debido a conflictos. En este artículo, me gustaría describir una de las formas de resolver estos problemas.

Este artículo sólo describe la solución al problema y no cubre las dependencias transitivas y cómo trabajar con ellas.

Utiliza tu propio pom padre


En la mayoría de los casos, las construcciones de dependencias existentes (como spring-boot-starter-parent o spring-boot-dependencies directamente) se utilizan en archivos pom como padre.

Pero ¿qué pasa si varios microservicios necesitan anular una versión de una de las dependencias o añadir una dependencia que no está en la compilación?

En este caso, es mejor crear su propio archivo pom padre. Esto ayudará a mantener las mismas versiones de librerías en todos los microservicios.

Todo lo que necesitas hacer es mantener tu versión pom padre actualizada en lugar de tener que resolver conflictos en cada microservicio por separado. Este enfoque parece obvio, pero por alguna razón, muchas personas lo descuidan.

Hacer tu propio pom padre es bastante sencillo utilizando la gestión de dependencias:

También puedes importar construcciones de dependencias existentes. Lo más conveniente es poner las versiones de las librerías en variables. Esto hará más fácil anular la versión de dependencia en un microservicio particular en casos excepcionales.

<properties>
  <java.version>17</java.version>
  <json.version>20231013</json.version>
  <spring-parent.version>3.1.5</spring-parent.version>
</properties>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>{json.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

En el caso de los plugins, también puedes controlar sus versiones:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.jsonschema2pojo</groupId>
        <artifactId>jsonschema2pojo-maven-plugin</artifactId>
        <version>${jsonschema2pojo.version}</version>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

Para usar un pom padre en un microservicio, necesitas publicarlo en tu repositorio local de maven con el comando mvn install (o en otro repositorio como Nexus). A continuación, debe especificar el padre en su microservicio y añadir dependencias sin especificar versiones:

<parent>
  <groupId>com.example</groupId>
  <artifactId>base-pom</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
  <dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
  </dependency>
</dependencies>

De este modo, los desarrolladores no tienen que pensar en qué versión utilizar cuando añaden dependencias a un microservicio.

Fuente

+