一条老狗

           老狗拉破车
posts - 12, comments - 11, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JIRA插件开发(一) [原创]

Posted on 2007-07-12 09:45 一条老狗 阅读(6384) 评论(4)  编辑  收藏 所属分类: Java

大家都知道,JIRA是一个优秀的问题跟踪系统。
但它不一定就能完全满足你的需要,比如导入Excel方式提交的BUG。
值得庆幸的是,JIRA提供了强大的插件开发功能,现说一说我的一点小经验。

准备: JIRA3.9,  JIRA SDK,  IDEA / Eclipse, 熟悉Java(废话),  熟悉WebWork
资料: http://confluence.atlassian.com/display/JIRA/JIRA+Development+Hub
官方资料可能无法全部找到你想要的,这时你可以下载一些其它第三方插件来分析其源码。


最重要的一点,那就是反编译JIRA代码,直接查看之。
比如,你想查看 /secure/IssueNavigator.jspa 的代码
打开 WEB-INF/classes/actions.xml 查找 IssueNavigator ,如下:   

<action name="issue.IssueNavigator" alias="IssueNavigator">   
    
<view name="success">/secure/views/navigator/navigator.jsp</view>   
    
<view name="error">/secure/views/navigator/navigator.jsp</view>   
</action>   

表示其对应的类是  com.atlassian.jira.web.action.issue.IssueNavigator 反编译之即可。


以下说一说一些常用的方法:
JIRA提供各种 xxxManager 提口来实现各种操作
你可以通过 ComponentManager.getInstance().getXxx() 来得到其实例
也可以通过 ComponentManager.getComponentInstanceOfType(xxx.class) 来得到,非常方便。

比如:

JiraAuthenticationContext authenticationContext = ComponentManager.getInstance().getJiraAuthenticationContext();    
   
ProjectComponentManager pcm 
= (ProjectComponentManager)ComponentManager.getComponentInstanceOfType(ProjectComponentManager.class);   

例子:

public static User getCurrentUser() {        
    JiraAuthenticationContext authenticationContext 
= ComponentManager.getInstance().getJiraAuthenticationContext();        
    
return authenticationContext == null ? null : authenticationContext.getUser();        
}
        
       
public static Project getProject(long pid) {        
    
return ComponentManager.getInstance().getProjectManager().getProjectObj(pid);        
}
     
   
public static MutableIssue getIssueById(Long id) {    
    
try {    
        IssueManager issueManager 
= ComponentManager.getInstance().getIssueManager();    
        
return issueManager.getIssueObject(id);    
    }
 catch (Exception e) {    
        
return null;    
    }
    
}
    

把邮件加入JIRA队列:


Email mail = new Email(toaddr);    
    
MailQueueItem item 
= new SingleMailQueueItem(mail);    
ManagerFactory.getMailQueue().addItem(item);    

另外你可以覆盖JIRA的Action,比如覆盖CreateSubTaskIssueDetails
让其在创建子任务时自动导入父任务的一些数据(如"所属模块")。


<action name="jira.plugin.rstoolkit.webui.action.CreateSubTaskIssueDetails" alias="CreateSubTaskIssueDetails">   
    
<view name="error">/secure/views/createsubtaskissue-details.jsp</view>   
    
<view name="input">/secure/views/createsubtaskissue-details.jsp</view>   
    
<view name="init">/rstoolkit/initsubtaskdetails.jsp</view>   
</action>   

实在不想打字,其它的一些就不一一列举了。


评论

# re: JIRA插件开发(一) [原创][未登录]  回复  更多评论   

2009-10-20 11:12 by paul
您好!看到你的jira插件开发文章,希望能向您请教下问题。我的qq:157184362

# re: JIRA插件开发(一) [原创]  回复  更多评论   

2010-06-30 11:38 by yxyas
jira 第二次开发,我想在原有的基础上在添加一个字段怎么做???我初学jira

# re: JIRA插件开发(一) [原创]  回复  更多评论   

2010-06-30 11:39 by yxyas
我QQ:214156339
想向你请教一下.

# re: JIRA插件开发(一) [原创][未登录]  回复  更多评论   

2016-01-27 14:19 by Java Fans
类似JIRA开发的插件化开源开发平台JXADF,也是相当震撼,详细参见:http://osgia.com

只有注册用户登录后才能发表评论。


网站导航: