tutorial proyecto mvn ejecutar desde crear consola compile como comandos maven osgi tycho maven-bundle-plugin

proyecto - ¿Debo usar POM primero o MANIFESTAR primero al desarrollar una aplicación OSGi con Maven?



maven tutorial pdf (3)

Hay dos enfoques principales al desarrollar una aplicación OSGi con Maven: POM-first y MANIFEST first.

Estoy buscando una respuesta en forma de tabla que muestre los pros y los contras de cada método.

Para ser más específicos, también me gustaría saber cómo se relaciona con:

  • Madurez del conjunto de herramientas
  • Independencia del vendedor
  • Facilidad de desarrollo (que incluye encontrar personas que puedan realizar el desarrollo en el herramental)
  • Compatibilidad
  • Evitando ClassNotFound
  • Evitar el trabajo manual.

Creo que deberías elegir por caso de uso. Para los proyectos OSGi del lado del servidor, prefiero el estilo pom first. Coincide muy bien con las construcciones de Maven y es mucho menos propenso a errores que Manifest primero. De hecho, bnd, que está detrás del complemento de paquete de Maven, tiene el derecho de manifiesto para la mayoría de los casos sin ninguna configuración adicional. El truco es usar algunas reglas de nombres. Por ejemplo, si nombra un paquete interno impl o interno, no se exportará. Usando este estilo, no puede usar la perspectiva del plugin de Eclipse (al menos sin bndtools, lo cual no me gusta), pero aún no me he perdido esta perspectiva. Soy un desarrollador en los proyectos Apache Karaf, CXF y Camel, donde usamos este estilo y funciona muy bien. Especialmente para CXF y Camel es genial que podamos admitir implementaciones OSGi y no OSGi con la misma compilación y herramientas.

Para las aplicaciones RCP de Eclipse, Manifest primero es el camino a seguir, ya que necesita la perspectiva del plugin y las herramientas IDE de Eclipse. Si quieres combinar eso con Maven, entonces probablemente sea el camino a seguir.


En la actualidad esto es lo que se me ocurre.

POM-First Pros (usando el plugin de paquete de maven)

  • Aprovecha las habilidades, repositorios y herramientas existentes de Maven.
  • Probablemente sea más fácil encontrar personas que saben cómo administrar pom.xml en lugar de MANIFEST.MF junto con pom.xml
  • La mayor parte de la información en MANIFEST.MF se puede obtener del propio pom.xml.
  • Puede trabajar con otros IDEs no solo basados ​​en Eclipse.
  • Menos invasivo, solo agregue el complemento único y cambie el tipo de paquete a "paquete"

POM-Primero Contras

  • ClassNotFoundException más probable que ocurra en el tiempo de ejecución. Sin embargo, esto se puede mitigar con el examen pax (aunque es muy complicado de configurar).
  • Aún debe comprender cómo se configura el MANIFEST para asegurarse de que el elemento de configuración de las instructions esté configurado correctamente.

MANIFEST-first Pros (utilizando el plugin de Tycho-Maven)

  • Parece ser el enfoque recomendado, o al menos se habla de él como el enfoque recomendado, pero realmente no puedo ver por qué tiene un beneficio significativo. (De ahí que se hiciera esta pregunta).
  • Bueno para desarrollar plugins de Eclipse y se integra bien con PDE
  • Proporciona herramientas para las pruebas, lo que permite que aparezca la excepción ClassNotFoundException durante las pruebas de JUnit en lugar del tiempo de ejecución.

MANIFIESTO-primeros Contras

  • Parece que solo funciona bien en los IDEs basados ​​en Eclipse. No tiene que usar Eclipse, pero sin el PDE, ¿desearía hacerlo?
  • Viola los principios de DRY, ya que tengo que mantener en sincronización los nombres y las versiones de POM y MANIFEST.MF.
  • Necesidad de nombrar las cosas de una manera específica
  • No puede mezclar, lo que significa que las instalaciones existentes de proyectos múltiples de Maven no pueden simplemente agregarse al soporte de OSGi
  • Se necesita mucha más configuración en comparación con maven-bundle-plugin para obtener menos advertencias: http://wiki.eclipse.org/Tycho/Reference_Card#Examplary_parent_POM
  • Hay que hacer los casos de prueba un proyecto separado. No se ejecutará cuando esté integrado en src / test / java.
  • Parece que solo probará las clases que están expuestas, en otras palabras, aquellas en ".internal". no es comprobable.

Si me pidieran una recomendación para una empresa que ya está usando Maven y quisiera mudarme a OSGi, entonces sería POM primero

Si me pidieron una recomendación para alguien que está haciendo el desarrollo del complemento Eclipse, entonces es Manifest primero - con tycho


MANIFEST primero no te encierra en Eclipse (aunque me sorprendería si más de una pequeña minoría usara cualquier otra cosa). MANIFEST es el archivo que cuenta y debe agregarse a un archivo jar, independientemente de cómo lo haga.

Por otro lado, POM primero lo bloquea completamente a Maven, usted pierde la ventaja de que un paquete OSGi es un tarro regular que puede hacer de la manera que desee.

He intentado ambos, realmente prefiero MANIFESTAR primero. El archivo MANIFEST es un archivo realmente importante, prefiero crear ese archivo en lugar de crear un archivo que produzca ese archivo. Si sucede algo extraño (y lo hará en algún momento) el archivo MANIFEST es el primero en verificar, es más fácil si es su propio archivo. Además, tendrás que estar familiarizado con él de todos modos.

Por lo tanto, si Maven es su alfa y omega, primero POM se adaptará mejor a su POM, pero aún necesitará tener una comprensión profunda del archivo MANIFEST.