Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

326
Views
¿Es esto duplicar una dependencia de Maven en un proyecto de varios módulos (es decir, Spring)?

Aquí está el desglose de la situación simple y me gustaría saber si lo estoy haciendo de manera óptima o si hay una mejor convención. He creado un proyecto ficticio solo con fines de aprendizaje.

He creado un proyecto Maven de varios módulos. Simplemente el POM principal, con dos POMS secundarios hermanos, uno es una capa de servicio y el otro es una capa web.

El objetivo del resultado final es tener un WAR en pleno funcionamiento en la carpeta de destino del proyecto web, que simplemente puedo implementar en un Tomcat.

Aquí es donde no estoy claro: - Tanto el proyecto de servicio como el proyecto web deben usar Spring. El proyecto Service necesita usar Spring simplemente para su propósito de inyección de dependencia. Necesito tomar una clase Dog simple e inyectarla automáticamente en el objeto DogService. Todo eso está funcionando bien. - Entonces necesito inyectar automáticamente un objeto DogService en un controlador Dog. El controlador Dog existe dentro del proyecto web en la estructura de varios módulos. Esto también funciona bien, porque he declarado una dependencia en el proyecto web para el proyecto de servicio, por lo tanto, todos los JAR de servicio se incluyen en el archivo WAR creado final, desde el proyecto web.

1) ¿Hay alguna manera de simplemente declarar una dependencia de Spring para ambos proyectos secundarios sin tener que declarar las dependencias en cada POM.xml secundario? Solo quiero asegurarme de no duplicar recursos. Creo que la forma de hacer esto es simplemente declarar la dependencia en Parent POM.xml.

2) Si hago el n. ° 1 arriba ^, ¿es esta la forma óptima de crear el proyecto? En esencia, el módulo WEB es el que contiene todos los archivos jar finales y, en esencia, es casi como si el proyecto SERVICIO ni siquiera existiera en Tomcat. Por lo que Tomcat 'sabe', todo lo que hay es un montón de archivos JAR que contienen clases, algunas de ellas escritas en mi módulo WEB y otras en el módulo SERVICIO, todo lo cual es irrelevante para el entorno de producción/Tomcat. ¿Verdadero o falso?

¡Gracias!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

¿Hay alguna manera de simplemente declarar una dependencia de Spring para ambos proyectos secundarios sin tener que declarar las dependencias en cada POM.xml secundario? Solo quiero asegurarme de no duplicar recursos. Creo que la forma de hacer esto es simplemente declarar la dependencia en Parent POM.xml.

Maven es bastante inteligente en cuanto a la administración de dependencias y no "duplicará" los recursos; almacena en caché cada dependencia una vez* y administra el classpath para que todos los proyectos con los que trabaja compartan los mismos archivos jar. En general, declare las dependencias en los módulos donde se necesiten; no desordene los módulos o especialmente los padres con piezas aleatorias solo para evitar volver a especificar una dependencia de vez en cuando. Esto es como transportar el remolque de su bote en su viaje diario porque ocasionalmente va al lago.

Tenga en cuenta que las dependencias son transitivas , de modo que si service-module depende de spring-web (¿realmente lo hace, o está enviando spam a las dependencias?), si web-module de service-module también extraerá la dependencia sin tener que repetirte.

Si hago el n. ° 1 arriba ^, ¿es esta la forma óptima de crear el proyecto?

No, no lo es. Sea minimalista con sus dependencias: si lo necesita, inclúyalo, pero no agregue dependencias "defensivamente". Esto solo aumentará su implementación y ralentizará las compilaciones, además de agregar oportunidades para problemas como discrepancias de versión.

Por lo que Tomcat 'sabe', todo lo que hay es un montón de archivos JAR que contienen clases, algunas de ellas escritas en mi módulo WEB y otras en el módulo SERVICIO, todo lo cual es irrelevante para el entorno de producción/Tomcat. ¿Verdadero o falso?

Mayormente falso. En una guerra, su proyecto de nivel superior ( web-module ) tiene sus clases directamente en el archivo y las dependencias están incrustadas como un archivo jar dentro de él. Sin embargo, Tomcat no distingue entre service-module y su Spring y otras dependencias.

Mejor aún sería utilizar el contenedor independiente y las funciones de contenedor integrado de Spring Boot: Boot se encargará de empaquetar los contenedores que necesita en un solo archivo ejecutable que no necesita soporte externo.

*Lanzamiento de dependencias únicamente, pero las instantáneas no son relevantes aquí.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!