Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该使用Eclipse插件(或OSGi捆绑包)作为普通的依赖关系管理工具吗?_Java_Eclipse_Maven 2_Osgi_Dependency Management - Fatal编程技术网

Java 我应该使用Eclipse插件(或OSGi捆绑包)作为普通的依赖关系管理工具吗?

Java 我应该使用Eclipse插件(或OSGi捆绑包)作为普通的依赖关系管理工具吗?,java,eclipse,maven-2,osgi,dependency-management,Java,Eclipse,Maven 2,Osgi,Dependency Management,事情又一次发生了。。。我加入了一个新项目,它由几个简单的Eclipse Java项目组成,具有相互依赖性,所有这些项目都通过项目构建路径进行管理。我觉得这一切有点混乱。当涉及到运行配置时,您只需进入地狱 在过去,我坚持创建插件项目,而不是普通的Java项目——即使我从未打算将这些项目作为osgi捆绑包运行。我只是发现依赖关系在插件项目中更容易管理。其他人也走同样的路吗?反对这种方法吗?这听起来是一种有趣的方法,但我个人认为最好使用外部构建工具(如Ant或Maven)来管理构建依赖关系,而不是将构

事情又一次发生了。。。我加入了一个新项目,它由几个简单的Eclipse Java项目组成,具有相互依赖性,所有这些项目都通过项目构建路径进行管理。我觉得这一切有点混乱。当涉及到运行配置时,您只需进入地狱


在过去,我坚持创建插件项目,而不是普通的Java项目——即使我从未打算将这些项目作为osgi捆绑包运行。我只是发现依赖关系在插件项目中更容易管理。其他人也走同样的路吗?反对这种方法吗?

这听起来是一种有趣的方法,但我个人认为最好使用外部构建工具(如Ant或Maven)来管理构建依赖关系,而不是将构建绑定到IDE。如果您使用maven和m2eclipse插件,那么在加载maven POM时,如果其他项目也在您的工作区中,它将自动设置Eclipse项目依赖项

不幸的是,如果您的团队目前正在使用特别的依赖关系管理,那么他们不太可能会想要跳转到Maven。再说一次,也许他们只是需要一个领导者来领导这项工作。

如果你读了这篇文章,那么这个项目正是这样做的:

  • 所有依赖项都将在OSGi包清单文件中表示,这些文件指定类路径(用于库JAR)和“必需”包。
    出于构建和测试的目的,必须包括部署环境中预期或希望使用的库(例如,
    XML
    JRocket
    ),但不包括在装运产品中。这些包可以指定为“可选”必需包或必需包

  • 初始二进制程序集将通过通常的bundle程序集工作,bundle输出包括来自所需的bundle片段(但不是来自可选bundle)的二进制文件


好处还包括OSGi的版本方面,它允许指定依赖项的最小和最大预期版本。

我个人不会使用插件项目,我会使用构建工具,如Ant、Maven和其他工具

如果没有集成构建系统,这意味着公司对软件开发了解不多


我不会承担引入构建系统的所有责任,可能需要额外的时间。如果他们不想迁移,我建议您尽快开始寻找另一份工作。

我认为您的方法非常合理,即使用OSGi进行依赖关系管理,即使您不会在OSGi容器中运行,因为最终它将导致更多的模块化代码。模块化代码更容易重构,更容易在多个开发人员之间分发。您甚至不需要扩展任何OSGi类,因此不需要创建任何其他依赖项

另一方面,Ken Liu关于使用外部依赖关系管理的建议也有它的优点,因为像Maven这样的东西会为您处理很多依赖关系和管理


把两者结合起来,你就能两全其美。OSGi可以使用诸如和之类的附加库与Maven一起工作。

这里有两个独立的问题

  • 如何设置多个项目,以及
  • 哪个构建系统允许我构建多个项目
  • 这两者不必有关联。因此,例如,您可以选择Maven来构建项目,但可以使用插件项目来实现更轻松的编辑。大多数事情都轻而易举地击败了Eclipse构建系统;一旦它开始工作,它就相当稳定了——但是从零开始工作需要(a)运气,和/或(b)黑魔法


    最终,这个问题会让你觉得更容易处理;两种类型的依赖关系,或者只是一种依赖关系。如果您想要一个,那么您需要在m2eclipse(它从maven POM生成项目依赖项)或使用pax构造(它可以从maven POM生成清单)之类的东西上投入时间。或者使用两个依赖关系管理系统。

    我同意,在Eclipse中,使用OSGi管理项目依赖关系比添加项目或库引用的传统方式更容易

    然而,如果您在开发时推广依赖关系管理的OSGi方式,那么开发人员将需要学习OSGi,并且在遇到类可见性问题时会付出代价

    您是否使用
    Require Bundle
    Import Package
    来管理依赖项?尽管OSGi不推荐使用
    requirebundle
    ,但从开发时依赖关系管理的角度来看,它可能更适合


    除非您使用的是Maven插件之类的东西,否则Eclipse在Eclipse内部和外部有着完全不同的编译/运行方法,这让人恼火,同时还要维护两个并行编译/运行系统。

    OSGI是一个标准,有三个主要实现—Eclipse Equinox、Apache Felix和Makewave Knoplerfish。OSGi在多个IDE中受支持,也可以在任何IDE之外开发。它绝对不会将您绑定到IDE。