tipos terminado producto para materiales funciones exportacion envases empaques empaque embalajes embalaje java maven jar javafx

java - terminado - El paquete de empaquetado no es válido El proyecto del agregador necesita pom como embalaje



tipos de empaque y embalaje para producto terminado (2)

Maven requiere que el padre sea de packaging pom .

Puede hacer que un proyecto pom comporte como si fuera un proyecto jar , incluyendo un conjunto de ejecuciones de plugins y adjuntándolos a su fase de ciclo de vida posterior. No es un camino feliz. Por el contrario, el siguiente es .

Desde un punto de vista orientado a objetos, ¿qué es lo que quieres? Usted tiene un objeto que está hecho de un montón de otros objetos, ¿verdad? En otras palabras, composición , en oposición a la herencia.

Su entrega final se compone de otros proyectos ( jar ), es decir, los otros proyectos son dependencias del proyecto de entrega final. Definirá los otros proyectos cada uno como dependency para que quienquiera use su entrega final sepa qué dependencias (transitivas) obtener. Alternativamente, el contenedor de entrega final podría empaquetarse como "uber-jar" y, por lo tanto, contener todas sus dependencias. Eso realmente depende de cómo se usará la entrega final.

Al mismo tiempo, los siguientes dos aspectos (pueden) todavía existen:

  • El proyecto principal (que es diferente al proyecto de entrega final, de hecho también puede ser el padre del proyecto de entrega final) define aspectos comunes entre sus hijos subsiguientes, como lo que debe esperar de la herencia. Un niño es cualquier proyecto que se refiere al padre a través de la configuración parent en su POM.
  • Un proyecto que define modules que se pueden construir fácilmente de una vez. Los módulos son proyectos que se derivan mediante el uso de modules.module . Esto es típicamente (supongo> 99%) hecho en el proyecto principal, pero no necesariamente. Podrías ponerlo en el proyecto de entrega final también (sin afectar la herencia, porque es una bestia diferente), pero es atípico y no iría allí.
  • En mi proyecto tengo diferentes módulos.
  • Cada módulo tiene pom.xml en el cual el empaque es un tarro.
  • Y cada pom se refiere al padre común.
  • En el módulo padre también hay un pom.xml que incluye todos los módulos.

    Pero cuando traté de hacer el empaquetado en el pom.xml del módulo principal, se muestra el error que es "El contenedor jar no es válido. El proyecto del agregador necesita pom como embalaje".

    Quiero hacer que el archivo ejecutable de la aplicación se ejecute, entonces, ¿cuál es la solución para este problema o hay otra solución?


Para hacer las cosas más cortas: si su proyecto padre-agregador no contiene código fuente (y es una buena práctica), solo agregue esto a su pom.xml padre:

<packaging>pom</packaging>

Si el proyecto principal contiene código fuente, le sugiero que:

  • mover este código en un nuevo módulo (llamémoslo commons )
  • commons un módulo secundario de tu proyecto principal
  • agregue el módulo de commons como una dependencia de todos los otros módulos que lo requieran (tal vez todos ellos)
  • agregue <packaging>pom</packaging> en el pom.xml principal