maven可视化添加依赖
缺少链接,了解问题
导出到另一个基于Eclipse的应用程序后,您的自定义Eclipse插件或功能失败了多少次?
在新环境中查找并满足所有插件依赖关系得到了简化。 过去,需要手动验证插件,但是如今,Eclipse的Dependency Visualization工具(属于Eclipse Incubator项目的一部分)消除或减少了这种必要性。 让我们详细研究该问题,查看可用的解决方案,并考虑可能的修改以简化插件依赖项分析任务。
OSGi,恩赐
Eclipse改变了Java™和其他语言程序员开发应用程序的方式,并促进了逐块创建大型应用程序。 尽管这不是一个新概念,但对所有开发人员来说,将所有依赖项清楚地包装在整齐的包装束中是一种幸福。
开放服务网关倡议(OSGi)的出现及其通过替换/添加/删除捆绑软件更新应用程序的优美机制创造了新的可能性。 现在,在客户端机器上更新基于Eclipse的应用程序与更新基于Web的应用程序一样普遍和简单。
问题
我们应该记住,要使整个更新机制正常工作,后台需要进行很多艰苦的工作。 我们知道任何基于Eclipse的应用程序都可以通过简单地将包放入适当的文件夹中来进行更新,但是依赖关系又如何呢? 您有多少次失去功能或遇到了可怕的Eclipse加载错误,却对发生的事情一无所知?
在两种情况下可以看到此问题:
- 第三方功能的安装-减少了缺少依赖项的可能性。 在最佳情况下,这些问题会在发布之前进行处理,但我们知道并非总是如此。
- 功能的创建-Eclipse提供了许多API,许多程序员未能利用目标平台。 导出捆绑软件后,Eclipse安装失败。
罪魁祸首是未能识别和记录新功能的最小捆绑集(以下称为依赖项)。
我们最近在计划在其中一个项目中使用SWTBot测试工具时遇到了这种情况。 与其他自动化测试工具一样,SWTBot的一部分应位于要测试的应用程序(AUT)中,以使自动化工作。 如果使用Equinox P2更新功能将SWTBot功能安装到应用程序中,它将处理相关性。 但是,很多时候这是不可能的,例如,当应用程序未启用P2时。
没什么可担心的(尚未); 让我们进入下一部分。
(不太好)解决方案
我们可以通过以下两种方式合理地解决此问题:
-
启动应用程序时启动OSGi控制台 - 逐一搜索未解决的插件以查找其依赖项
如果幸运的话,您会收到一条简单的错误消息,例如“由于缺少必需的XYZ包而无法解析ABC包”。
如果没有,您将看到“由于缺少软件包XYZ而无法解析软件包ABC”,因为您必须确定哪个软件包导出了指定的软件包。
您不能使用package<package name>
命令来查找分发包,因为它仅在解决有问题的分发包时才起作用。 如果已解决,您将不会收到错误。
控制台方法增加了一个不利的方面。 考虑一种情况,这种情况在您端可以正常工作,但不能在用户没有足够技术来使用控制台的远程计算机上运行。 即使您有一个精明的用户,也不希望他们挠头并想知道开发人员的技能。
最后,基于Eclipse的应用程序通常使用自定义机制启动,例如在无法直接提供-console
选项时使用自定义脚本。
考虑到这一点,让我们看一个更好的解决方案。
更好的解决方案
前面提到的背景工作并不总是那么困难。 我们宁愿聪明地工作,Eclipse Project可以帮助我们做到这一点。
本文演示了Eclipse Project工具Dependency Visualization的使用 ,该工具显示插件的依赖关系而无需启动目标应用程序。 这甚至可以在启动应用程序之前帮助确定未解析的插件。
Eclipse PDE项目–依赖关系可视化
注意 :用于显示依赖关系图的Dependency Visualization插件与Eclipse 3.5.X或更高版本一起使用。
设置和使用
- 使用Eclipse更新存储库功能安装功能。 转到“
Help>Install New Software
然后粘贴到http://download.eclipse.org/eclipse/pde/incubator/visualization/site中 。 取消选中“ 按类别分组项目”复选框。然后转到
Window>Show View>Other>Graph Plug-in Dependencies view
,或者按Ctrl + 3并选择Graph Plug-in Dependencies视图 , 如图1所示 。图1.图形插件依赖关系视图
- 转到
Window>Preferences>Plug-in Development>Target Platform
并指向Eclipse目标平台以包含来自<application_install> / dropins和<application_install> / plugins的插件 ,并将其设置为活动状态。 单击Apply 。(请参见图2。 )图2。
- 右键单击并选择“ 聚焦于” 。 选择您要查看其依赖关系图的dropins下的插件。 在这里org.eclipse.emf.core
三个依赖性分析工具已添加到控制面板。 通过选择捆绑包,可以突出显示此捆绑包的最短路径,所有路径和智能路径。 最短且所有路径都是不言自明的。 智能路径显示从直接需要的捆绑包到所选插件的所有最短路径。 图3显示了一个示例。
图3.依赖关系的智能路径视图
- 为了帮助插件开发人员跟踪和修复错误,已添加了错误报告功能,以突出显示无法解决的包的路径。 (参见图4。 )
图4.视觉错误报告
- 搜索文本框可用于突出显示与特定字符串匹配的所有插件。 在这种情况下,所有包含字符串org.eclipse.mylyn的包都将突出显示。 图5显示了一个示例。
图5.视觉搜索
- 屏幕截图工具可用于根据插件依赖图创建PNG。 (参见图6。 )
图6.插件依赖图快照
- 预定义了几个缩放级别,这些缩放级别可通过视图的上下文菜单使用。 (参见图7。 )
图7.设置缩放级别
- 版本号切换按钮可用于向插件开发人员显示已解决的特定捆绑包。 (请参见图8。 )
图8.捆绑软件版本号视图
- 查看选定插件的调用者和被调用者的选项如图9所示 。
图9.显示呼叫者和被叫者
通过使用这些功能,将从<application_install> / dropins文件夹(此处为org.eclipse.emf.core )中选择的插件与<application_install> / dropins和<application_install> / plugins文件夹中的所有插件一起进行验证,以进行依赖性检查。 ,并且会报告错误。
前进一步
Eclipse团队所做的工作值得称赞,但是可以进一步扩展此功能。 该工具一次显示单个插件的依赖性,但是正如我们在第一部分中讨论的那样,我们需要确定功能中的所有插件和捆绑包是否都已完全解析。 与其一一对应地关注包,不如提供一个到依赖关系可视化工具的文件夹路径,并让它一次检查该文件夹中所有包的依赖关系,效率更高。
除此之外,该工具还会在目标平台上扫描MANIFEST.MF的“ Required Bundle
部分中提到的插件,并报告缺少的插件。 但是,未解决的导入包呢?
我们在Eclipse PDE项目的顶部编写了一个小代码,以实现这些代码,从而使插件依赖关系分析变得更加轻松。 以下是详细信息:
设置和使用
- 恢复第2.1节中完成的安装。 请参阅位于http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-123.htm的文档,以恢复到先前的Eclipse安装。
- 将本文随附的
org.eclipse.pde.visualization.dependency_1.0.0.jar
复制到您的Eclipse / plugins目录中,然后重新启动Eclipse。 (请参阅下载 。)
- 转到
Window>Show View>;Other>Graph Plug-in Dependencies view
或按Ctrl + 3并选择图形插件依赖关系视图以打开该工具。
验证文件夹中的所有插件
这样可以验证指定文件夹中的所有插件。 此功能可节省时间,因为您无需右键单击并为每个插件选择Focus On… 。 未解决的捆绑包的报告被合并并显示在单个位置。
注意 :在“ 插件位置”下指定的文件夹中的插件也应包括在活动目标平台中。 (参见图10。 )
图10.设置插件位置
单击“ 应用” ,所有未解决的捆绑软件列表应以红色显示在超链接下方。 图11显示了使用指定文件夹中最后一个包的依赖关系图检测到的32个错误。
图11.显示未解决的包数
基本上,我们的代码:
- 浏览指定文件夹中的所有插件,
- 检查每个插件的依赖关系,以及
- 将所有未解决的依赖项添加到“检测到的错误”中。
要查看每个插件的依赖关系图,请右键单击或在工具栏上使用“ 后退”和“ 前进”选项。 (参见图12。 )
图12.遍历元素树
其余功能,例如
- 显示捆绑版本,
- 显示依赖路径,
- 显示被呼叫者,以及
- 显示来电者,
像以前一样工作
报告未解决的导入包错误
一个束的依赖关系既可以下指定Required Plug-ins
或Imported Packages
下Dependencies
MANIFEST.MF的部分。 仅当“必需的插件”和“导入的软件包”中提到的用于导出软件包的软件包可用时,该软件包才能完全解决。 Eclipse PDE项目仅报告缺少“必需插件”的错误,并跳过未解决的软件包。
我们做了进一步的更改,以显示所选捆绑软件的未解决的导入软件包(具有版本范围)。 (参见图13。 )
- 错误列表将首先包含所有缺少的“必需插件”,然后包含未解决的程序包。
- 可选的导入将被跳过。
图13.未解决的导入包错误
请注意,在使用第3.2节中提到的功能时,对于指定文件夹中的所有插件,错误报告中只会报告丢失的“必需的插件”,而不是未解析的导入包。
缺少的导入详细信息在单个插件级别提供,并且可以通过右键单击或在工具栏上使用“ 后退”和“ 前进”选项来查看。 可以进行进一步的更改以在文件夹级别包括此功能,并且可以进行扩展以生成全面的日志文件或仅通过控制台显示。
在所有情况下,未解决的导入软件包将仅在错误报告中显示(链接为红色),而不在图形中显示,因为该工具不知道哪个插件将导出此未解决的软件包。
同样,其余功能,例如
- 显示捆绑版本,
- 显示依赖路径,
- 显示被呼叫者,以及
- 显示来电者,
像以前一样工作
局限性和常见陷阱
- 该工具仅提供插件依赖性分析,而不提供片段分析。
- 它仅与活动目标平台中提到的其他插件一起验证特定插件。 该工具无法建议解决缺少的所需插件或未解决的导入的问题。
- 该代码已使用IBM JRE 1.5版进行编译和测试。
结论
本文演示了Eclipse PDE提供的“依赖关系可视化”工具,并对其进行了一些自定义修改,旨在提供一组视图来协助插件依赖关系分析任务。 尤其是,视图将在开发人员尝试了解其插件之间的依赖关系时为其提供认知支持。
翻译自: https://www.ibm.com/developerworks/opensource/library/os-eclipse-dependencyvisualization/index.html
maven可视化添加依赖