2017-07-17 49 views
-3

我有使用REST API在JIRA中创建版本的gradle脚本。 但也有jira-rest-java-client也可用。我想使用jira-rest-java-client的java库,并希望在gradle中执行相同的操作。有人可以提供一个例子,我怎么可以试试这个。在Java/gradle/groovy中使用jira-rest-java-client java库吗?

如何通过示例使用jira-rest-java-client库与JIRA建立连接?

在Java中,我试图用这个JRCJ图书馆,而是通过Intellj得到以下错误

import com.atlassian.jira.rest.client.api.JiraRestClient; 
import com.atlassian.jira.rest.client.api.domain.*; 
import com.atlassian.jira.rest.client.api.domain.input.ComplexIssueInputFieldValue; 
import com.atlassian.jira.rest.client.api.domain.input.FieldInput; 
import com.atlassian.jira.rest.client.api.domain.input.TransitionInput; 
import com.atlassian.jira.rest.client.internal.ServerVersionConstants; 
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory; 
import com.google.common.collect.Lists; 
import org.codehaus.jettison.json.JSONException; 


import java.io.IOException; 
import java.net.URI; 
import java.net.URISyntaxException; 
import java.util.Arrays; 
import java.util.Collection; 
import java.util.List; 



/** 
* A sample code how to use JRJC library 
* 
* @since v0.1 
*/ 
public class Example1 { 

    private static URI jiraServerUri = URI.create("http://localhost:2990/jira"); 
    private static boolean quiet = false; 

    public static void main(String[] args) throws URISyntaxException, JSONException, IOException { 
     parseArgs(args); 

     final AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory(); 
     final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "admin", "admin"); 
     try { 
      final int buildNumber = restClient.getMetadataClient().getServerInfo().claim().getBuildNumber(); 

      // first let's get and print all visible projects (only jira4.3+) 
      if (buildNumber >= ServerVersionConstants.BN_JIRA_4_3) { 
       final Iterable<BasicProject> allProjects = restClient.getProjectClient().getAllProjects().claim(); 
       for (BasicProject project : allProjects) { 
        if (project == TEST){ 
        println(project);}else { 
         System.out.println("Project" + "Not Found"); 
        } 
       } 
      } 

      // let's now print all issues matching a JQL string (here: all assigned issues) 
      if (buildNumber >= ServerVersionConstants.BN_JIRA_4_3) { 
       final SearchResult searchResult = restClient.getSearchClient().searchJql("assignee is not EMPTY").claim(); 
       for (BasicIssue issue : searchResult.getIssues()) { 
        println(issue.getKey()); 
       } 
      } 

      final Issue issue = restClient.getIssueClient().getIssue("TST-7").claim(); 

      println(issue); 

      // now let's vote for it 
      restClient.getIssueClient().vote(issue.getVotesUri()).claim(); 

      // now let's watch it 
      final BasicWatchers watchers = issue.getWatchers(); 
      if (watchers != null) { 
       restClient.getIssueClient().watch(watchers.getSelf()).claim(); 
      } 

      // now let's start progress on this issue 
      final Iterable<Transition> transitions = restClient.getIssueClient().getTransitions(issue.getTransitionsUri()).claim(); 
      final Transition startProgressTransition = getTransitionByName(transitions, "Start Progress"); 
      restClient.getIssueClient().transition(issue.getTransitionsUri(), new TransitionInput(startProgressTransition.getId())) 
        .claim(); 

      // and now let's resolve it as Incomplete 
      final Transition resolveIssueTransition = getTransitionByName(transitions, "Resolve Issue"); 
      final Collection<FieldInput> fieldInputs; 

      // Starting from JIRA 5, fields are handled in different way - 
      if (buildNumber > ServerVersionConstants.BN_JIRA_5) { 
       fieldInputs = Arrays.asList(new FieldInput("resolution", ComplexIssueInputFieldValue.with("name", "Incomplete"))); 
      } else { 
       fieldInputs = Arrays.asList(new FieldInput("resolution", "Incomplete")); 
      } 
      final TransitionInput transitionInput = new TransitionInput(resolveIssueTransition.getId(), fieldInputs, Comment 
        .valueOf("My comment")); 
      restClient.getIssueClient().transition(issue.getTransitionsUri(), transitionInput).claim(); 
     } 
     finally { 
      restClient.close(); 
     } 
    } 

    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; 
    } 

} 

错误:

xception in thread "main" java.lang.NoClassDefFoundError: com/atlassian/sal/api/executor/ThreadLocalContextManager 
    at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.create(AsynchronousJiraRestClientFactory.java:35) 
    at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.createWithBasicHttpAuthentication(AsynchronousJiraRestClientFactory.java:42) 
    at Example1.main(Example1.java:34) 
Caused by: java.lang.ClassNotFoundException: com.atlassian.sal.api.executor.ThreadLocalContextManager 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 3 more 

而且我加了JRJC API,核心罐子外部库,但仍得到这个错误?

有人能告诉我什么是问题或我错在哪里?

回答

0
compile 'com.atlassian.jira:jira-rest-java-client-core:4.0.0' 
compile 'com.atlassian.jira:jira-rest-java-client-api:4.0.0' 

方便地连接到JIRA:

 JiraRestClient restClient = new AsynchronousJiraRestClientFactory().createWithBasicHttpAuthentication(new URI("https://" + jira_domain), 
       jira_username, jira_password);