Builder Marker and Nature

Builder

builder是Eclipse为用户提供的随资源发生变化扩展自定义行为的接口

一、扩展org.eclipse.core.resources.builders

在build(int kind, Map args, IProgressMonitor monitor)中做build过程中要做的事情,kind表示build类型

  • Project->Build 为选中的project调用build方法,传入的kind为INCREMENTAL_BUILD
  • Project->Build All 为所有打开project调用build方法,传入kind为INCREMENTAL_BUILD
  • 如果自上次调用build开始没有发生变化,则再次调用点击Build不会有build被调用,次机制有Eclipse提供
  • Project->Clean为选中的project调用build方法,传入的kind为FULL_BUILD
  • Project->Build Automatically,资源发生变更时,Eclipse调用build方法,传入的kind为AUTO_BUILD

二、为项目添加加builder

将自定义builder的hasNature设置为false

  1. 手动方式:
    1. 打开需要添加builder的项目的.project文件
    2. 增加节点

      <buildCommand>
         <name>com.uniquesoft.mint.test.mintTestBuilder</name>
         <arguments>
         </arguments>
        </buildCommand>

    3. 关闭项目然后重新打开

  2. Note: name值必须是builder所属插件的ID+"."+builder的name的ID,即builder的全名
  3. 程序方式:
    1. 获得项目的buildCommand信息 
    2. 增加buildCommand节点

 Note:程序方式与手动方式基本相同,区别在于通过程序方式增加后不需要重新打开项目

三、激活builder

  1. menu:Project->Build (All/Automatically)
  2. 通过程序:IProject.build和IWorksapce.build
  3. 项目打开时

Marker

一、扩展org.eclipse.core.resources.markers

  1. super:添加一个已有marker作为super,可以使得自定义的marker具有此super marker的特性,例如指定org.eclipse.core.resources.problemmarker作为super,自定义的marker就可以在problem view中显示相关信息
  2. persistent 是否支持跨session(不同的Eclipse运行实例)
    • false:产生的makers在Eclipse中期之后不会再现
    • true:产生的makers在Eclipse中期之后会重现
  3. attribute

Note:marker的标识符必须是他所属的插件的ID+"."+marker的ID

二、创建marker

IResource.createMarker(markerID) //full ID

 三、为maker创建Resolutions

扩展org.eclipse.ui.ide.markerResolution,根据Eclipse提示实现IMarkerResolutionGenerator2接口

  1. hasResolutions(IMarker marker)
  2. 自定义ResolutionGenerator通过override hasResolutions方法决定是否为某些特定的marker创建resolution :

    上述代码为MISSING_KEY_VIOLATION 和 UNUSED_KEY_VIOLATION创建resolution

     

  3. getResolutions(IMarker marker)

    自定义ResolutionGenerator通过override getResolutions方法决定如何为特定的marker提供resolution

Note:两个方法必须相结合才能为marker成功创建resolution,首先在hasResolutoins中为特定的marker返回true,然后在getResolutions中为此marker创建Resolution

 

Nature

Builder and Nature is used to extend the behavior of certain projects

Marker is used to extend the behavor of certain resources

 

一、扩展 org.eclipse.core.resources.natures

Nature 管理了一组Builder,可以将这些builder用于特定的项目,将Nature加入项目,就是意味着将这些builder都加入到此项目

  1. 为Nature指定需要管理的builder: 增加builder节点,指向相应的builder
  2. 为Nature增加需要管理的buidler:
    1. 增加runtime节点,实现IProjectNature接口
    2. setProject() 在Nature加入到特定的项目(IProject.getDescription().setNatureIds())时调用此方法,然后configure被调用,将buidler的添加放入此方法; deConfigure在删除Nature是调用 对builder的删除和marker的删除这个方法中
  3. 将Nature关联到项目
    1. 找到项目的description
    2. 通过descripion.setNatureIds将Nature加入到项目中

Note:favorite example中,需要把两个require-nature去掉才能成功运行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值