Should I use POM first or MANIFEST first when developing OSGi application with Maven?

后端 未结 3 1369
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-14 02:43

There are two main approaches when developing an OSGi application with Maven: POM-first and MANIFEST first.

I\'m looking for an answer that is in a form of a table t

3条回答
  •  爱一瞬间的悲伤
    2020-12-14 03:27

    At present this is what I can come up with

    POM-First Pros (using maven-bundle-plugin)

    • Leverages existing Maven skills, repositories and tooling.
    • Likely easier to find people who know how to manage pom.xml rather than MANIFEST.MF along with pom.xml
    • Most of the information in MANIFEST.MF can be obtained from the pom.xml itself.
    • Can work with other IDEs not just Eclipse based ones.
    • Less invasive, just add the single plugin and change the packaging type to "bundle"

    POM-First Cons

    • ClassNotFoundException more likely to occur at runtime. However, this can be mitigated using pax-exam (although it is very complicated to set up).
    • Still need to understand how the MANIFEST is setup to make sure the instructions configuration element is set correctly.

    MANIFEST-first Pros (using tycho-maven-plugin)

    • Seems to be the recommended approach, or at least talked about as the recommended approach, but I can't really see why it has significant benefit. (Hence why this question was asked).
    • Good for developing Eclipse plugins and integrates well with PDE
    • Provides tooling for testing thus allowing ClassNotFoundException to appear during JUnit testing rather than runtime.

    MANIFEST-first Cons

    • Seems to only work well on Eclipse based IDEs. You don't have to use Eclipse, but without the PDE would you want to?
    • Violates DRY principles since I have to do put keep the names and versions from the POM and MANIFEST.MF in sync.
    • Need to name things in a specific fashion
    • You cannot mix, meaning existing Maven multi-project installations cannot just tack on OSGi support
    • A lot more configuration compared to maven-bundle-plugin is needed to get less warnings: http://wiki.eclipse.org/Tycho/Reference_Card#Examplary_parent_POM
    • Have to make test cases a separate project. It won't run when built in src/test/java.
    • Seems that it will only test classes that are exposed, in other words those in ".internal." is not testable.

    If I were asked for a recommendation for an enterprise that is using Maven already and want to move to OSGi then it would be POM first

    If I were asked for a recommendation for someone who is doing Eclipse plugin development, then it is Manifest first -- with tycho

提交回复
热议问题