Atlassian JIRA System 扩展

    很多公司都会用JIRA这个软件来管理项目,确实是个不错的工具。但是最近经过一番思考,发现任何软件能力范围毕竟是有限的,工具也毕竟是工具,只有量身定做的设计和架构才是最适合的和最能发挥高效的选择。所以开始尝试着对JIRA做一些扩展和集成。目标是能对JIRA里的Project, Issue等信息从外部自己定制的程序中读取,并在必要的时候去操作。JIRA官方提供了多种plugin和扩展的接口,其中以笔者较熟的Java来实现的方式有两种:

    1. XML-RPC

    2. Rest API

1. XML-RPC

    Core Lib: Apache XML RPC

    Official reference: http://docs.atlassian.com/software/jira/docs/api/rpc-jira-plugin/latest/com/atlassian/jira/rpc/xmlrpc/XmlRpcService.html

    Depends on Jar Used: xmlrpc-common-3.1.3.jar, common-logging-1.1.jar, ws-commons-util-1.0.2.jar, xmlrpc-client-3.1.3.jar, xmlrpc-server-3.1.3.jar

    Sample Code:

public class RPCDemo {
	public static final String JIRA_URI = "<your JIRA URL>";
	public static final String RPC_PATH = "/rpc/xmlrpc";
	public static final String USER_NAME = "<JIRA Username>";
	public static final String PASSWORD = "<password>";
	
	public static void main(String[] args) throws Exception{
		XmlRpcClient rpcClient;
		XmlRpcClientConfigImpl config;
		
		config = new XmlRpcClientConfigImpl();
		config.setServerURL(new URL(JIRA_URI+RPC_PATH));
		rpcClient = new XmlRpcClient();
		rpcClient.setConfig(config);
		
		Vector<String> loginParams = new Vector<String>(2);
		loginParams.add(USER_NAME);
		loginParams.add(PASSWORD);
		String loginToken = (String)rpcClient.execute("jira1.login", loginParams);
		
		Vector<String> loginTokenVector = new Vector<String>(1);
		loginTokenVector.add(loginToken);
		
		Object[] projects = (Object[])rpcClient.execute("jira1.getProjectsNoSchemes", loginTokenVector);
		
		//Print Projects
		for(int i=0;i<projects.length;i++){
		  Map<String,String> project = (Map<String,String>)projects[i];
		  System.out.println("KEY: "+project.get("key")+"\tNAME: "+ project.get("name")+"\tLEAD: "+project.get("lead"));
		}
                 }}

2. Rest API

    RPC的缺点是必须要用户登录,获知密码才能拿到JIRA里的信息,而且对于Issue的全套属性并不能全部拿到,官方一直也没有更新。后来查阅Rest API的实现方式之后,发现解决了RPC所有的缺点。

    Core Lib: jira-rest-java-client-0.3.1.jar

    Official reference:https://studio.atlassian.com/wiki/display/JRJC/Tutorial

    Depends on Jar Used: jersey-bundle-1.9.jar, jersey-apache-client-1.9.jar, jersey-client-1.9.jar, joda-time-2.0.jar, jsr311-api-1.0-1.3.0.jar, jettison-1.2.jar, jersey-core-1.9.jar, guava-r09.jar, commons-httpclient-3.0.jar, commons-codec-1.5.jar, commons-logging.jar

    Sample Code;   

public class JiraConnection {
	private JiraRestClient restClient;
	private NullProgressMonitor pm;
	private boolean initSuccess = false;
	
	public JiraConnection(){
		try{
			JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory();
			URI jiraServerUri = new URI("<your JIRA URL>");
	        AnonymousAuthenticationHandler anonymousHandler = new AnonymousAuthenticationHandler();
	        restClient = factory.create(jiraServerUri, anonymousHandler);
	        pm = new NullProgressMonitor();
	        
	        initSuccess = true;
		}catch(Exception ex){
			initSuccess = false;
		}
	}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值