前期准备
1.首先要安装好Maven环境;
2.需要创建一个Maven项目或者Springboot项目,可以参考:SpringBoot — 初始创建项目小白教程
Demo创建
1.配置 pom.xml 文件,添加JiraRestJavaClient的依赖包:
<!-- 使用jira-rest-cilent的依赖-->
<dependencies>
...
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-rest-java-client-core</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>io.atlassian.fugue</groupId>
<artifactId>fugue</artifactId>
<version>4.7.2</version>
</dependency>
<dependencies>
这里依赖的版本要注意,因为好像两者需要协同工作。如果版本不搭配,可能会出现报错。
仓库可以参考:https://mvnrepository.com/artifact/io.atlassian.fugue/fugue
- 创建个类,用用户名密码认证的方式床创建客户端:
public class JiraUtil {
/**
* 登录Jira并返回指定的JiraRestClient对象
* @param username
* @param password
* @throws URISyntaxException
* */
public static JiraRestClient loginJira(String url,String userName,String pwd){
AsynchronousJiraRestClientFactory asynchronousJiraRestClientFactory = new AsynchronousJiraRestClientFactory();
JiraRestClient jiraRestClient = asynchronousJiraRestClientFactory.createWithBasicHttpAuthentication(
URI.create(url), userName,pwd);
return jiraRestClient;
}
}
public static void main(String[] args) {
JiraRestClient client = loginJira("http://localhost:8080","username","pwassword");
//根据key查询issue
Issue issue =client.getIssueClient().getIssue("key-1").claim();
}
主要就是利用JiraRestClient实例,调用一系列操作方法。
获取到JiraRestClient的实例之后,就可以利用对象的getIssueClient犯法获取一些issue基础数据了。
也可以自行进行方法封装,方便后续方法调用。
例如:
/**
* 获取指定JIRA的开发的姓名列表
*
* @param issue
* @return
* @throws URISyntaxException
*/
public static ArrayList<String> get_developers(Issue issue) throws URISyntaxException {
try {
ArrayList<String> developersList = new ArrayList<String>();
Json json = Json.read(issue.getFieldByName("开发人员").getValue().toString());
Iterator<Json> developers = json.asJsonList().iterator();
while (developers.hasNext()) {
Json developer = Json.read(developers.next().toString());
String developerName = developer.at("displayName").toString();
developersList.add(developerName);
}
return developersList;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 通过jql语句进行查询并返回一个包含issue的key的数组
*
* @param username 登录JIRA的用户名
* @param password 登录JIRA的用户密码
* @param current_user_name 要查询的用户名
* @param jql
* @return
* @throws URISyntaxException
*/
public static ArrayList<String> search_jql(String username, String password, String current_user_name, String jql)
throws URISyntaxException {
final JiraRestClient restClient = loginJira(username, password);
SearchResult searchResult = restClient.getSearchClient().searchJql(jql).claim();
Iterator<BasicIssue> basicIssues = searchResult.getIssues().iterator();
ArrayList<String> issueKeys = new ArrayList<>();
while (basicIssues.hasNext()) {
String issueKey = basicIssues.next().getKey();
System.out.println(issueKey);
issueKeys.add(issueKey);
}
return issueKeys;
}