JIRA REST java client API实际应用
Posted 目前在腾讯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JIRA REST java client API实际应用相关的知识,希望对你有一定的参考价值。
[本文出自天外归云的博客园]
前提
1、需要安装maven环境;
2、在本地创建maven项目并修改maven配置文件“pom.xml”,添加如下内容:
<dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-rest-java-client</artifactId> <version>0.5-m6</version> </dependency> <dependency> <groupId>com.atlassian.util.concurrent</groupId> <artifactId>atlassian-util-concurrent</artifactId> <version>3.0.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.sharegov/mjson --> <dependency> <groupId>org.sharegov</groupId> <artifactId>mjson</artifactId> <version>1.4.1</version> </dependency>
以上三个依赖中,前两个是用来和jira进行交互的类库,最后一个是可以让我能够像在python中处理json一样处理json的mjson类库。
封装方法
对JIRA的操作进行简单封装,示例如下:
package com.mockCommon.util; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import org.joda.time.DateTime; import com.atlassian.jira.rest.client.JiraRestClient; import com.atlassian.jira.rest.client.NullProgressMonitor; import com.atlassian.jira.rest.client.domain.Comment; import com.atlassian.jira.rest.client.domain.Issue; import com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory; import mjson.Json; public class JiraUtil { /** * 登录JIRA并返回指定的JiraRestClient对象 * * @param username * @param password * @return * @throws URISyntaxException */ public static JiraRestClient login_jira(String username, String password) throws URISyntaxException { final JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory(); final URI jiraServerUri = new URI("http://jira.ms.netease.com"); final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, username, password); return restClient; } /** * 获取并返回指定的Issue对象 * * @param issueNum * @param username * @param password * @return * @throws URISyntaxException */ public static Issue get_issue(String issueNum, String username, String password) throws URISyntaxException { final JiraRestClient restClient = login_jira(username, password); final NullProgressMonitor pm = new NullProgressMonitor(); final Issue issue = restClient.getIssueClient().getIssue(issueNum, pm); return issue; } /** * 获取指定JIRA备注部分的内容 * * @param issue * @param username * @param password * @return * @throws URISyntaxException */ public static List<String> get_comments_body(Issue issue, String username, String password) throws URISyntaxException { List<String> comments = new ArrayList<String>(); for (Comment comment : issue.getComments()) { comments.add(comment.getBody().toString()); } return comments; } /** * 获取指定JIRA的创建时间 * * @param issueNum * @param username * @param password * @return * @throws URISyntaxException */ public static DateTime get_create_time(Issue issue, String username, String password) throws URISyntaxException { return issue.getCreationDate(); } /** * 获取指定JIRA的描述部分 * * @param issueNum * @param username * @param password * @return * @throws URISyntaxException */ public static String get_description(Issue issue, String username, String password) throws URISyntaxException { return issue.getDescription(); } /** * 获取指定JIRA的标题 * * @param issueNum * @param username * @param password * @return * @throws URISyntaxException */ public static String get_summary(Issue issue, String username, String password) throws URISyntaxException { return issue.getSummary(); } /** * 获取指定JIRA的报告人的displayName并返回String类型对象 * * @param issueNum * @param username * @param password * @return * @throws URISyntaxException */ public static String get_reporter(Issue issue, String username, String password) throws URISyntaxException { return issue.getReporter().getDisplayName(); } /** * 获取指定JIRA的分派人的displayName并返回String类型对象 * * @param issue * @param username * @param password * @return * @throws URISyntaxException */ public static String get_assignee(Issue issue, String username, String password) throws URISyntaxException { Json json = Json.read(issue.getFieldByName("分派给").getValue().toString()).asJsonList().get(0); return json.at("displayName").toString(); } /** * 测试函数 * * @param args * @throws URISyntaxException */ public static void main(String[] args) throws URISyntaxException { String username = "用户名"; String password = "密码"; String issueNum = "JIRA号"; final Issue issue = get_issue(issueNum, username, password); List<String> jiraCommentsBody = get_comments_body(issue, username, password); DateTime jiraCreateTime = get_create_time(issue, username, password); String description = get_description(issue, username, password); String summary = get_summary(issue, username, password); String reporter = get_reporter(issue, username, password); String assignee = get_assignee(issue, username, password); System.out.println(assignee); } }
以上代码中在get_assignee()方法部分用到了mjson中的Json对象,也是主要用来处理json的对象。首先将返回结果(一个包含在list中的json对象)转换为jsonList并取第一个元素,也就是其中包含的json对象。然后将json对象中的displayName属性值取出来。
代码中“用户名”、“密码”、“JIRA号”部分为需要替换的部分。
以上是关于JIRA REST java client API实际应用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JIRA REST API 将 JIRA Agile 问题分配给当前用户的当前 sprint?
如何使用 JIRA Cloud REST API 创建对 jira 问题的内部评论
自动在 JIRA Adaptavist 工具中发布测试结果,来自 Eclipse 上运行的 rest api 测试用例