Java con Maven: cómo hacer que el módulo B depende de frasco de un módulo?

Kaspar Johannes Schneider:

Contexto:

La pregunta está relacionada con un multi-módulo (maven, no de Java 9 módulos) proyecto Java utilizando Maven para la construcción de ésta, donde un módulo depende de la jarra de otro módulo.

Vista general de los módulos y un poco de contexto:

  • A: una biblioteca compilada a un frasco.
  • B: una aplicación cliente, que depende de la jarra de una ; compilado a un jar ejecutable.
  • C: una aplicación de servidor, ni en función de A ni B ; compilado a un jar ejecutable.
  • Sólo puedo utilizar Java 8 y por lo tanto no hay módulos de Java 9.
  • El IDE es usado IntelliJ IDEA último.

Que funciona:

  • La construcción de los módulos a tres frascos separados (ejecutables en caso de B y C ) usando mvn clean package.
  • La importación de los paquetes de módulo A en las clases de módulo B ( no lo que yo quiero ).
  • Adición de una dependencia de módulo A en el pom.xml de B (no sé el efecto que esto tiene ...).

Lo que me gustaría lograr:

  • Me gustaría añadir una dependencia a la jarra construido a partir de módulos A a la pom.xml del módulo B .
  • Me gustaría importar clases públicas y las interfaces de la jarra del módulo A en las clases de módulo B (añadiéndolo como una dependencia en el pom.xml y sin copiar el frasco manualmente). -> Desarrollo y depuración de B sólo debe depender de la última versión estable de A y no se deben romper con el desarrollo simultáneo de la biblioteca A .
  • El proceso de generación entera debe completarse mediante la ejecución de un script Bash (una vez).
  • La construcción del proyecto debe seguir los siguientes pasos en orden:
    1. Módulo de acumulación A a un vaso (si es también inevitable acumulación B ).
    2. Build (o reconstruir) módulo B usando el frasco generado en el paso 1. a un tarro ejecutable.
    3. Construir el módulo C en cualquier momento durante el proceso de construcción.

¿Hay una solución elegante usando maven para hacer esto?

JF Meier:

En Maven, que tiene generalmente dos opciones:

  1. Definir tres proyectos A, B y C.
  2. Definir un proyecto multi-módulo que contiene A, B y C como módulos.

En cualquiera de los casos, usted describe dependencias mediante el uso de las dependencias de Maven en el pom.xml.

proyectos de módulos múltiples se suelen construir de una sola vez, por lo que la compilación de todo el código y utilizando el mismo número de versión para los tres módulos. Esto violaría su idea de "construir en contra de la última versión estable", ya que siempre dependerá de la versión más reciente de A cuando se genera.

Si define tres proyectos diferentes, que no tiene estas restricciones (y C parece ser de todos modos independiente). Dos problemas siguen: Es necesario actualizar la versión de A en la dependencia - que se puede hacer con las versiones del plugin. Y quiere construir un "one-click acumulación". El método más sencillo sería probablemente una tubería en Jenkins (o lo que su servidor de compilación es), pero también se puede escribir un script que llama a Maven tres veces.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=239007&siteId=1
Recomendado
Clasificación