Java Redmine Rest API

What(何事)

有一个需求,通过Java创建Redmine任务。

Why(何解)

了解Redmine
  • Redmine支持Java调用吗?
    是的,支持!Redmine Rest API提供了一套规则允许外部脚本调用。
    Redmine Rest API
    Redmine API JAVA 范例
    Redmine API JAVA MAVEN
    Redmine REST API 帮助文档

  • Redmine配置
    从范例中可以看出,我们需要一个Redmine apiAccessKey参数,作为请求参数来调用API,实现脚本创建任务,这个apiAccessKey怎么获得的呢

    • apiAccessKey的获得
      在这里插入图片描述
      如上图所示,登陆Redmine平台,点击‘我的账号’,在显示界面中,点击图片中箭头所指显示,我们所需要的apiAccessKey就会显示出来。
  • Redmine打开Rest API功能
    上面说来如何配置,现在说如何让Redmine支持被脚本调用,默认是不开放的,操作如下:
    在这里插入图片描述
    如上图所示,登陆Redmine平台,点击‘管理 -> 配置 -> API’,在所显示界面中将启动REST web service 与 启动JSONP支持勾选,并保存,即可。

编写Java脚本
  • 通过maven构建所需jar
<!-- 略 -->
<dependencies>
    <!-- https://mvnrepository.com/artifact/com.taskadapter/redmine-java-api -->
    <dependency>
        <groupId>com.taskadapter</groupId>
        <artifactId>redmine-java-api</artifactId>
        <version>3.1.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>
<!-- 略 -->
  • 编辑脚本
public class TaskManager {

    private static Object issues;

    public static void main(String[] args) throws Exception {
        //redmine本地地址
        String uri = "http://********:******";
        //redmine apiAccessKey
        String apiAccessKey = "**************";
        //目标项目
        String projectKey = "first_pro";
        // any
        Integer queryId = null;

        RedmineManager mgr = RedmineManagerFactory.createWithApiKey(uri, apiAccessKey);
        //获取问题管理对象
        IssueManager issueManager = mgr.getIssueManager();
        //获取所有问题
        List<Issue> issues = issueManager.getIssues(projectKey, queryId);
        //迭代输出问题
        for (Issue issue : issues) {
            System.out.println(issue.getDescription());
            System.out.println(issue.toString());
        }

        //设置跟踪 1:问题;2:功能
        Tracker tracker = TrackerFactory.create(2);
        for(int i=1; i<100; i++) {
            Issue issueToCreate = IssueFactory.create(1, "some subject");
            issueToCreate.setStatusId(5);
            issueToCreate.setTracker(tracker);
            issueManager.createIssue(issueToCreate);
        }

        //通过ID获取问题(这里获取ID=11的问题)
        Issue issue = issueManager.getIssueById(11);
        System.out.println(issue.getDescription());
    }

}

JAVA API 中所需参数获取方式

Redmine Status

[http://redmine_home/issue_statuses.xml]
由此获取我们可用的状态码
详见:Rest_IssueStatuses

Redmine Trackers

[http://redmine_home/trackers.xml]
由此获取我们可用跟踪
详见:Rest_Trackers

Redmine Users

[http://redmine_home/users.xml]
由此获取我们可用用户列表
注:如果我们要添加用户作为跟踪者或者任务发布者,必须将其加入到项目中!!!
详见:Rest_Users

测试

在这里插入图片描述

Redmine版本

Redmine 3.4.6.stable

结语

至此,JAVA脚本创建Redmine任务即完成来,应项目需求来使用。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐