在Java应用程序中提供依赖项

在Java应用程序中提供依赖项,java,jar,dependency-management,Java,Jar,Dependency Management,我正在Java上开发类似容器的应用程序,它可以承载另一个基于Java的应用程序(如Google App Engine)。目前,我正在使用Maven汇编插件将托管的应用程序组装成一个具有所有依赖项的超级JAR,但这看起来是一个糟糕的做法 是否有一些库或工具在运行时提供依赖关系?我的意思是,我只想为托管的组件特定类创建一个JAR,没有任何依赖项,并将依赖项列表存储在这个JAR中(在pom.xml或其他地方)。宿主应用程序将读取此清单并将所需库加载到运行时。有现成的解决方案吗?像这样的工具可能会有问题

我正在Java上开发类似容器的应用程序,它可以承载另一个基于Java的应用程序(如Google App Engine)。目前,我正在使用
Maven汇编插件
将托管的应用程序组装成一个具有所有依赖项的超级JAR,但这看起来是一个糟糕的做法


是否有一些库或工具在运行时提供依赖关系?我的意思是,我只想为托管的组件特定类创建一个JAR,没有任何依赖项,并将依赖项列表存储在这个JAR中(在
pom.xml
或其他地方)。宿主应用程序将读取此清单并将所需库加载到运行时。有现成的解决方案吗?

像这样的工具可能会有问题;Java也可以在运行时动态加载东西。这可能对你有用:


如果确实需要减小大小,可以在JavaVM中使用verbose标志查看加载的所有类。您必须执行所有代码才能获得类,因为它们仅在使用时加载(并且只加载一次)。此外,这种情况并不常见,但根据平台的不同,可能会加载不同的类

如果您在Jars清单中提供了类路径元素,那么类加载器将加载,然后自动调用。您希望在运行时下载并安装依赖项吗?我希望在运行时使用类似Maven的东西@MadProgrammer-依赖关系可以在远程存储中。您考虑过OSGi吗?我听说过ApacheFelix,但从未在生产中尝试过。这是一个易于使用的解决方案吗?我的意思是类似Maven的东西,但在运行时-所有依赖项都将列出,我的主机将读取列表,下载JAR,将它们加载到运行时,然后加载组件。主要问题是阶级冲突,而不是规模