Java OSGI。 Maven vs Eclipse+Ant - 最佳实践

标签 java maven osgi

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

7年前关闭。




Improve this question




我已经编写了相当多的java,并且熟悉maven和eclipse,
但我之前没有制作过 OSGi。

我们的场景是这样的:

  • 在 tomcat 中创建一个 OSGi 包,旨在作为插件放入已经存在和专有的 java webapp。
  • OSGi 包的代码必须依赖于现有 web 应用程序中已经存在的特定库,因此,我们必须在 list 文件中指定依赖关系,而不是实际链接这些库。 (但我们仍然需要在编译期间存在的 jar)
  • 此外,由于这些库是专有的,因此它们不存在于 maven 存储库中。

  • 困境:
    我为我的所有应用程序构建了一个模块化的 maven,但是使用 maven 来创建这个 OSGi 包似乎有点乏味。
  • 我为 maven 找到了一个 OSGi-bundle 插件,但设置起来似乎有点棘手,为了让一切都正确。
  • 由于我们依赖于很多专有的 jar,我们需要在 pom 中指定每个 jar,并且需要事先为每个开发人员(不仅仅是我)安装这些库的 mvn 安装。要么,要么为此设置我们自己的内部 maven repo。如果我们收到专有软件的新产品更新,所有的 jar 版本都可能发生变化。

  • 总而言之,在我看来,使用 maven 来完成这项任务会增加很多开销和复杂性,但并没有真正获得太多,因为无论如何都需要手动检查依赖项。

    我很想将我们需要的每个 jar 转储到我们的版本控制存储库中,为此创建一个 eclipse 项目(Eclipse 支持 OSGi 相当好),并将类路径指向所需的 jar(仅用于编译目的..它们实际上不是显然与 jar 捆绑在一起)。
    然后让eclipse最后为它生成一个ant buildscript。

    这将是快速且相当无痛的。有人有什么建议吗? Maven方式? eclipse 方式?还有什么?

    最佳答案

    (注意:我没有资格回答这个问题,因为我对 maven+osgi 不是很好)

    首先,OSGi 框架在您的 Web 应用程序中位于哪里?是应用程序本身启动框架还是框架启动应用程序?例如

  • tomcat > webapp+libs > osgi
  • tomcat > osgi > webapp+libs

  • 当前的架构将限制您可能的途径。

    您是否考虑过 mavenizing 现有的第三方库并拥有一个内部 maven repo?当您使用它时,您可以向它们添加 OSGi 元数据。这将允许您将捆绑包构建为独立捆绑包,而无需在每个库中进行链接。如果您使用包导入(推荐)而不是捆绑包导入,则可以避免在 OSGi 框架中安装 OSGi-fied 3rd 方 jar;相反,您修改框架启动并指定第 3 方 jar 中的所有包都由原始类加载器提供。

    关于Java OSGI。 Maven vs Eclipse+Ant - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25104719/

    相关文章:

    java - OSGI 外部配置器文件夹未加载

    dependencies - Osgi 不会匹配包内的 native 代码

    java - 为什么注释字符串值没有被实习?

    java.lang.NoSuchMethodError : io.netty.channel.DefaultChannelId.newInstance()Lio/netty/channel/DefaultChannelId;

    Maven - 从构建中排除文件夹

    linux - 使用 bash 在 Linux 中的一堆目录上运行 mvn clean install

    java - Maven 库在更多具有不同依赖项的项目中使用

    java - 我所有 REST API 中的 JSON 自定义响应,我可能不知道它叫什么?

    java - SimpleDateFormat 解析错误的时间

    java - 使用 bndtools 包装从默认包导入的第三方 jar