日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

jira java接口生成问题

發(fā)布時(shí)間:2023/12/1 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jira java接口生成问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考頁(yè)面:

可方便擴(kuò)展的JIRA Rest Web API的封裝調(diào)用

JIRA是一個(gè)缺陷跟蹤管理系統(tǒng),被廣泛應(yīng)用于缺陷跟蹤、客戶服務(wù)、需求收集、流程審批、任務(wù)跟蹤、項(xiàng)目跟蹤和敏捷管理等工作領(lǐng)域,當(dāng)我們需要把第三方業(yè)務(wù)系統(tǒng)集成進(jìn)來(lái)時(shí),可以調(diào)用他的API。

JIRA本身的API非常強(qiáng)大,但它是一個(gè)底層的API體系,并不是一個(gè)易用的接口,如果要開(kāi)發(fā)和拓展,所以需要我們二次包裝。

jira官方為解決這個(gè)問(wèn)題,推出了方便強(qiáng)大的java client library(目前只有java客戶端庫(kù),沒(méi)有.Net類庫(kù))

jira的Rest API ?最新文檔官網(wǎng).

JIRA 6.4.12 REST API documentation

https://docs.atlassian.com/jira/REST/latest/

JIRA REST API Tutorials:

https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials

JIRA Java?Client library?

https://ecosystem.atlassian.net/wiki/display/JRJC/Home

(獲取所有項(xiàng)目目的,獲取projectKey,issuetype)

package jiraTEST;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;

import org.apache.commons.codec.binary.Base32;
import org.joda.time.DateTime;

import com.atlassian.jira.rest.client.IssueRestClient;
import com.atlassian.jira.rest.client.JiraRestClient;
import com.atlassian.jira.rest.client.SearchRestClient;
import com.atlassian.jira.rest.client.domain.BasicIssue;
import com.atlassian.jira.rest.client.domain.BasicProject;
import com.atlassian.jira.rest.client.domain.BasicUser;
import com.atlassian.jira.rest.client.domain.Comment;
import com.atlassian.jira.rest.client.domain.Field;
import com.atlassian.jira.rest.client.domain.Issue;
import com.atlassian.jira.rest.client.domain.Project;
import com.atlassian.jira.rest.client.domain.SearchResult;
import com.atlassian.jira.rest.client.domain.Transition;
import com.atlassian.jira.rest.client.domain.input.ComplexIssueInputFieldValue;
import com.atlassian.jira.rest.client.domain.input.FieldInput;
import com.atlassian.jira.rest.client.domain.input.IssueInput;
import com.atlassian.jira.rest.client.domain.input.IssueInputBuilder;
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
import com.atlassian.util.concurrent.Promise;
import com.google.common.collect.Lists;

public class CvteJiraDemo {

public static String BaseURL = "http://jira-test:8080/";
public static String User = "admin";
public static String Password = "admin";
private static URI jiraServerUri = URI
.create("http://jira-test/rest/api/2/");
private static boolean quiet = false;
private static final long BUG_TYPE_ID = 1L; // JIRA magic value
private static final long TASK_TYPE_ID = 3L; // JIRA magic value
private static final DateTime DUE_DATE = new DateTime();
private static final String PRIORITY = "Trivial";
private static final String DESCRIPTION = "description";

?

public static void main(String[] args) throws InterruptedException,
ExecutionException {

final AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
URI jiraServerUri;
try {
jiraServerUri = new URI(BaseURL);
final JiraRestClient restClient = (JiraRestClient) factory
.createWithBasicHttpAuthentication(jiraServerUri, User,
Password);
getAllProjects(restClient);
getProject(restClient, "DEMO");
getIssue(restClient, "FEEDBACK-14");
getIssueFields(restClient, "FEEDBACK-27");
addIssue(restClient, "FEEDBACK", "AAAAB");
addIssueComplex(restClient, "FEEDBACK",DUE_DATE.toString());

} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {

}
}

private static void println(Object o) {
if (!quiet) {
System.out.println(o);
}
}

private static void parseArgs(String[] argsArray) throws URISyntaxException {
final List<String> args = Lists.newArrayList(argsArray);
if (args.contains("-q")) {
quiet = true;
args.remove(args.indexOf("-q"));
}

if (!args.isEmpty()) {
jiraServerUri = new URI(args.get(0));
}
}

private static Transition getTransitionByName(
Iterable<Transition> transitions, String transitionName) {
for (Transition transition : transitions) {
if (transition.getName().equals(transitionName)) {
return transition;
}
}
return null;
}

// 得到所有項(xiàng)目信息
private static void getAllProjects(final JiraRestClient restClient)
throws InterruptedException, ExecutionException {
try {

Promise<Iterable<BasicProject>> list = restClient
.getProjectClient().getAllProjects();
Iterable<BasicProject> a = list.get();
Iterator<BasicProject> it = a.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}

} finally {
}
}

// 得到單一項(xiàng)目信息
private static void getProject(final JiraRestClient restClient,
String porjectKEY) throws InterruptedException, ExecutionException {
try {

Project project = restClient.getProjectClient()
.getProject(porjectKEY).get();
System.out.println(project);

} finally {
}
}

// 得到單一問(wèn)題信息
private static void getIssue(final JiraRestClient restClient,
String issueKEY) throws InterruptedException, ExecutionException {
try {

Promise<Issue> list = restClient.getIssueClient()
.getIssue(issueKEY);
Issue issue = list.get();
System.out.println(issue);

} finally {
}
}

// 創(chuàng)建問(wèn)題
public static BasicIssue createIssue(final JiraRestClient jiraRestClient,
IssueInput newIssue) {
BasicIssue basicIssue = jiraRestClient.getIssueClient()
.createIssue(newIssue).claim();
return basicIssue;
}

//添加備注到問(wèn)題
public static void addCommentToIssue(final JiraRestClient jiraRestClient,Issue issue, String comment) {
IssueRestClient issueClient = jiraRestClient.getIssueClient();
issueClient.addComment(issue.getCommentsUri(), Comment.valueOf(comment)).claim();
}


//刪除問(wèn)題,目前找不到對(duì)應(yīng)API
public static void deleteIssue(final JiraRestClient jiraRestClient, Issue issue) {
IssueRestClient issueClient = jiraRestClient.getIssueClient();
//issueClient.deleteIssue(issue.getKey(), false).claim();
}

//通過(guò)標(biāo)題獲取問(wèn)題
public static Iterable findIssuesByLabel(final JiraRestClient jiraRestClient, String label) {
SearchRestClient searchClient = jiraRestClient.getSearchClient();
String jql = "labels%3D"+label;
com.atlassian.jira.rest.client.domain.SearchResult results = ((SearchRestClient) jiraRestClient).searchJql(jql).claim();
return results.getIssues();
}

//通過(guò)KEY獲取問(wèn)題
public static Issue findIssueByIssueKey(final JiraRestClient jiraRestClient, String issueKey) {
SearchRestClient searchClient = jiraRestClient.getSearchClient();
String jql = "issuekey = \"" + issueKey + "\"";
SearchResult results = searchClient.searchJql(jql).claim();
return (Issue) results.getIssues().iterator().next();
}

// 創(chuàng)建問(wèn)題 :僅有簡(jiǎn)單問(wèn)題名稱
private static void addIssue(final JiraRestClient restClient,
String porjectKEY, String issueName) throws InterruptedException,
ExecutionException {
try {
IssueInputBuilder builder = new IssueInputBuilder(porjectKEY,
TASK_TYPE_ID, issueName);
builder.setDescription("issue description");
final IssueInput input = builder.build();

try {
// create issue
final IssueRestClient client = restClient.getIssueClient();
final BasicIssue issue = client.createIssue(input).claim();
final Issue actual = client.getIssue(issue.getKey()).claim();
System.out.println(actual);
} finally {
if (restClient != null) {
// restClient.close();
}
}

} finally {
}
}

// 創(chuàng)建問(wèn)題 :包含自定義字段
private static void addIssueComplex(final JiraRestClient restClient,
String porjectKEY, String issueName) throws InterruptedException,
ExecutionException {
try {
IssueInputBuilder builder = new IssueInputBuilder(porjectKEY,
TASK_TYPE_ID, issueName);
builder.setDescription("issue description");
// builder.setFieldValue("priority", ComplexIssueInputFieldValue.with("name", PRIORITY));
//單行文本
builder.setFieldValue("customfield_10042", "單行文本測(cè)試");

//單選字段
builder.setFieldValue("customfield_10043", ComplexIssueInputFieldValue.with("value", "一般"));

//數(shù)值自定義字段
builder.setFieldValue("customfield_10044", 100.08);

//用戶選擇自定義字段
builder.setFieldValue("customfield_10045", ComplexIssueInputFieldValue.with("name", "admin"));
//用戶選擇自定義字段(多選)
Map<String, Object> user1 = new HashMap<String, Object>();
user1.put("name", "admin");
Map<String, Object> user2 = new HashMap<String, Object>();
user2.put("name", "wangxn");
ArrayList peoples = new ArrayList();
peoples.add(user1);
peoples.add(user2);
builder.setFieldValue("customfield_10047", peoples);

//設(shè)定父問(wèn)題
Map<String, Object> parent = new HashMap<String, Object>();
parent.put("key", "FEEDBACK-25");
FieldInput parentField = new FieldInput("parent", new ComplexIssueInputFieldValue(parent));
builder.setFieldInput(parentField);

final IssueInput input = builder.build();
try {
final IssueRestClient client = restClient.getIssueClient();
final BasicIssue issue = client.createIssue(input).claim();
final Issue actual = client.getIssue(issue.getKey()).claim();
System.out.println(actual);
} finally {
if (restClient != null) {
// restClient.close();
}
}

} finally {
}
}


//獲取問(wèn)題的所有字段
private static void getIssueFields(final JiraRestClient restClient,
String issueKEY) throws InterruptedException, ExecutionException {
try {

Promise<Issue> list = restClient.getIssueClient()
.getIssue(issueKEY);
Issue issue = list.get();
Iterable<Field> fields = issue.getFields();
Iterator<Field> it = fields.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}

} finally {
}
}

}

?

轉(zhuǎn)載于:https://www.cnblogs.com/antime/p/9437880.html

總結(jié)

以上是生活随笔為你收集整理的jira java接口生成问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。