我们有一些插件的依赖/通用jar,我们目前将其放置在ContentNavigator应用程序的.lib中,并在ContentNavigator的build.xml中引用。当我们把jar放在local中,并试图在build.xml中给出local路径时,它没有成功。有人能提出建议的方法吗?
我应用了以下方法:
- 在导航插件中嵌入/提取依赖jar的所有内容(.class文件(。虽然好处是您有一个包含所有依赖类的漂亮捆绑包,但它可能会导致签名jar的一些问题。或者在依赖项中重复的文件上
- 利用";共享库";概念你基本上;附上";jar到服务器/JVM、应用程序(ear(或模块(war(的类加载器。在您的情况下,您可能会将共享库附加到navigator.ear,允许所有插件访问您注册为共享库的依赖项。一个巨大的缺点是(根据我的经验(,每次更新一个库jar时都需要重新启动websphere
- 第三种选择是将功能从ICN插件中移出,并让另一个EAR/EJB来完成工作(并使用jndi查找从插件中引用它(
我个人更喜欢选项3,因为它是捆绑功能的最干净的方式&EAR中的依赖项。但是,当库确实很常见并且不会经常更新时,选项2将是一个很好的选择。
p.s.在您的问题中,您还提到了软件的构建方面(例如"如何正确引用依赖项"(。你可能想研究一下";依赖性管理";(使用Ant,IVY是一个不错的选择,但我建议转移到Maven或Gradle(