Aquí está mi variación de los "múltiples artefactos de Maven build" pregunta: ¿proyecto Maven (EJB) con artefactos de cliente y servidor
Estoy portar de Ant para Maven. Mi aplicación es un servidor EJB que está empaquetado como un EAR, pero también expone un JAR de cliente para que lo usen otras aplicaciones cliente. Este jar contiene las interfaces EJB, clase de fachada y algunos ayudantes.
Sé que la forma de Maven es tener un artefacto por proyecto (POM); sin embargo, ambos artefactos (EAR del servidor y JAR del cliente) deben construirse desde el mismo árbol fuente: el servidor y el recurso compartido del cliente, por ejemplo, las interfaces EJB e 'inicio'.
¿Cómo puedo hacer esto en Maven?
¿Tengo un proyecto que contenga dos POM, por ejemplo server-pom.xml & client-pom.xml? Pensaba que también podría tener un padre POM (pom.xml) que se pueda usar para construir el cliente y el servidor de una sola vez. Sin embargo, los ciclos de vida divergen después de la fase de 'paquete', ya que el servidor debe pasar por el ensamblado (tar/gzip), mientras que el cliente finaliza después de 'paquete' y puede simplemente instalarse en el repositorio.
¿Algún consejo/experiencia sobre la mejor manera de abordar esto?
¡Excelente! Déjame intentar eso. –
@Pascal, esto funciona bien excepto cuando el cliente EJB es una dependencia de otro módulo dentro del mismo proyecto de varios módulos. En primer lugar, no puede usar el cliente EJB como un módulo anidado en la lista de módulos de los padres, ya que no tiene su propia carpeta, es solo un subproducto del módulo EJB. En segundo lugar, el artefacto del cliente EJB solo se crea en la fase del paquete, por lo que el reactor no podría agregarlo al classpath combinado de todos modos. –
Parece que tengo que abandonar este enfoque y crear un módulo explícito para el cliente EJB. Sin embargo, esto significa que este nuevo módulo 'ejb-client' tendría que compartir el origen de Java con el módulo principal 'ejb' (las interfaces EJB son compartidas). Supongo que mantendré la fuente en el módulo principal 'ejb' y configuraré el módulo 'ejb-client' para que apunte a la misma carpeta de origen (por ejemplo, ../ejb/src). –