我们有一些插件的依赖/通用 jars,我们当前将它们放在 ContentNavigator 应用程序的 .lib 中,并在 ContentNavigator 的 build.xml 中引用它们。当我们将罐子放在本地并尝试在 build.xml 中提供本地路径时,它没有成功。谁能建议推荐的方法是什么?
问问题
69 次
1 回答
0
我应用了以下方法:
- 在导航器插件中嵌入/提取依赖罐的所有内容(.class 文件)。虽然好处是你有一个包含所有依赖类的漂亮包,但它可能会导致签名 jar 出现一些问题。或者在您的依赖项中重复的文件上。
- 利用“共享库”概念。您基本上将 jar “附加”到您的服务器/JVM、应用程序(ear)或模块(war)的类加载器。在您的情况下,您可能会将共享库附加到 navigator.ear,允许所有插件访问您注册为共享库的依赖项。一个巨大的缺点是(根据我的经验),每次更新一个 library-jars 时都需要重新启动 websphere。
- 第三种选择是将功能移出您的 ICN 插件,并让另一个 EAR/EJB 完成工作(并使用 jndi 查找从插件中引用它)。
我个人更喜欢选项 3,因为它是在 EAR 中捆绑功能和依赖项的最简洁方式。但是当库真的很常见并且不会经常更新时,选项 2 将是一个很好的选择。
ps 在您的问题中,您还提到了软件的构建方面(例如“如何正确引用依赖项”)。您可能想研究“依赖管理”的概念(使用 Ant,IVY 是一个不错的选择,但我建议迁移到 Maven 或 Gradle)
于 2020-07-24T14:11:00.027 回答