热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Fragment_EclipsePluginFragment使用步骤

篇首语:本文由编程笔记#小编为大家整理,主要介绍了EclipsePluginFragment使用步骤相关的知识,希望对你有一定的参考价值。在RCP或者IDE的开发过过

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Eclipse Plugin Fragment使用步骤相关的知识,希望对你有一定的参考价值。


在RCP或者IDE的开发过过程中,有时我们需要利用一些第三方开源插件项目,但又不想改动其源码(方便后续的同步升级与该项目一致),这时fragment是个不错的选择。

 

最近我就遇到了这样的情况,然而凭着自己的一点理解,始终无法使fragment生效(不得不吐槽下eclipse插件开发确实小众,资料甚是难找),经过一天多的折磨,渐渐搞清了使用fragment的几个关键点,拿来分享。

 

先分享一个英文资料(http://wiki.eclipse.org/Steps_to_use_Fragments_to_patch_a_plug-in)

 

如果你照着做仍然不得其法,那么不妨继续看看我的理解和总结:

Step1:创建fragment

这个很简单,通过eclipse的新建向导,按照步骤创建即可,创建过程中需要指定fragment的ID、Version等信息(与plugin出奇一致),同时最重要的是指定该fragment对应的host插件,通过向导选择按钮配置即可。

进行到这一步,fragment创建完了,那么关键点来了,为了保证fragment中的配置文件(fragment.xml)和Java代码能够被host加载,并覆盖host对应的内容,需要做如下操作:

1)打开META-INF/MANIFEST.MF文件,点击MANIFEST.MF标签页,添加Eclipse-PatchFragment: true配置,按照我的理解,这个配置能够声明当前fragment为fragment(废话),host插件加载时需要同时加载该fragment,该配置能够保证fragment中的extension定义生效。

2)打开Runtime标签页,点击Classpath—>New,添加library.jar和“.”(完全按照向导默认即可),同时将library.jar上移到“.”之前

3)切换到build标签页,删掉“.”,然后保存。

 

Step2:Make Patch

在host插件中,找到你想修改的类,完完整整的复制到fragment源文件夹中(src),包路径及类名一定要一致,然后do what you want。

然而做完上述工作,启动后,你仍会发现,你改的代码不执行,仍然执行原host的代码,这是因为缺少如下重要的配置。

 

Step3:配置host插件

1)打开host插件(可以通过 Import—>Plug-ins and Fragment向导以Source Project或者Project with source folder方式导入)

2)打开META-INF/MANIFEST.MF文件,点击MANIFEST.MF标签页,添加Eclipse-ExtensibleAPI: true(该配置能够保证会去加载fragment的代码,但能否加载到还得靠下面的配置)

3)打开Runtime标签页,点击Classpath—>New,添加library.jar和“.”(完全按照向导默认即可),同时将library.jar上移到“.”之前

4)切换到build标签页,删掉“library.jar.”,然后保存。

※3)和4)与Step1中的2)和3)对应,总的来说是保证host插件在包路径类名相同情况下,优先加载library的代码逻辑,其次加载host本身代码逻辑,而library.jar则指向了fragment的源码,这样就保证了fragment的代码逻辑优先生效。

 

至此fragment的开发配置即完成。需要注意的是,打包形成最终成果物时,host插件是被更改过的,需要重新导出为插件(相比较其他方式,该方式对host改动最小),而不是原版第三方插件。

而如果你是个熟手的话,你会发现所有的操作,最终影响的只是MANIFEST.MF文件的配置,熟悉了这点你可以直接更改host插件的.MF 文件,而不必重新对host打包

 

备忘:同名通路径非代码文件比如除plugin.xml之外的其他文件是否按此方式也能生效,有待检验(可能需要在加载的代码逻辑处进行分支处理,类似NLS的操作)

 


推荐阅读
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
author-avatar
顺辉1988
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有