我正在开发一个Java SE项目,该项目同时包含一个库部分(一些public
类包),供其他人编写的程序和一个应用程序部分(具有main()
的类方法)使用该库。因此,安装环境必须处理同时存在多个应用程序并使用库的不同版本的可能性。关于如何处理这个问题的任何想法?人们如何避免JAR hell?
Java的未来版本将包含Jigsaw功能。企业应用程序可以使用OSGi组件功能。但是现在非企业应用程序 呢?是否有比OSGi更简单的工作完成任务?
在一些初步答案后编辑: 我可以使用我们的版本控制和构建过程合理地处理构建时依赖性问题。它对我真正感兴趣的运行时依赖问题的帮助。
答案 0 :(得分:2)
当然:Maven
抱歉,误读了这个问题。
您可以在任何应用程序中使用OSGi(Equinox或Felix),它不必是企业(基于服务器)应用程序。
也就是说,您可以根据需要通过创建URLClassLoader
来轻松控制类的可见性。这就是OSGi实现的方式。
答案 1 :(得分:1)
Apache Ivy是一种轻量级的解决方案。它仅 依赖关系管理,并不会尝试更改您的构建系统以匹配。
答案 2 :(得分:0)
使用Maven。
Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中心信息管理项目的构建,报告和文档。
答案 3 :(得分:0)
如果你想要的只是依赖性解析,那么Apache Ivy就符合要求。它的性能与Maven的依赖性解析类似,但缺少Maven的复杂性,因为它的功能要少得多。
答案 4 :(得分:0)
我不知道我曾经听说过术语"运行时依赖"在Java上下文中使用。正如我所熟悉的,运行时依赖性通常通过应用程序上下文来处理。 Spring Framework是管理应用程序上下文的一种方式。