美文网首页
Java集成redmineapi

Java集成redmineapi

作者: 啊哈_0042 | 来源:发表于2019-09-28 17:25 被阅读0次

下面来说说java集成redmine的方法
根据https://github.com/taskadapter/redmine-java-api进行编写。

pom使用的依赖

<dependency>
    <groupId>com.taskadapter</groupId>
    <artifactId>redmine-java-api</artifactId>
    <version>3.1.1</version>
</dependency>

登陆相关

public RedmineManager loginRedmine(String login,String password) {
        RedmineManager mgr =     RedmineManagerFactory.createWithUserAuth("http://redmine.springgroup.cn/redmine",login,password);
        return mgr;
    }

放回的mgr可以对redmine就可以对redmine进行任何操作了

获取某个项目下的问题

1.这里我传的是账号密码,当然你也可以传redminekey
2.下面代码中的“project”指的是redmine中的项目名称,进入redmine问题页面的链接中域名后面那一段

public void selectIssues() throws RedmineException {
        RedmineCommonFunction redmine=new RedmineImpCommonFunction();
        RedmineManager mgr=redmine.loginRedmine("账号","密码");
        mgr.setObjectsPerPage(100);
        List<Issue> issues = mgr.getIssueManager().getIssues("project", null);
        for (Issue issue : issues) {
            System.out.println(issue.toString());
        }
    }

创建redmine

1.RedmineModel redmineModel使用的是类传参哈。
2.自定义字段添加的值可以谷歌浏览器f12抓一下创建redmine的请求所需要的链接

public int creatIssues(RedmineModel redmineModel) throws ParseException, RedmineException {
        RedmineCommonFunction redmine=new RedmineImpCommonFunction();
        ToolsCommonFunction tools=new ToolsImpCommonFunction();
        //输入redmine认证
        RedmineManager mgr=redmine.loginRedmine(redmineModel.getLogin(),redmineModel.getPassword());
        //获取问题管理对象
        IssueManager issueManager = mgr.getIssueManager();
        //设置跟踪 1:问题;2:功能
        Tracker tracker = TrackerFactory.create(1);
        Issue issueToCreate = IssueFactory.create(179, redmineModel.getIssueTitle());
        //主题
        issueToCreate.setSubject(redmineModel.getSubject());
        //描述
        issueToCreate.setDescription(redmineModel.getDescription());
        issueToCreate.setStatusId(1);
        //计划完成日期
        issueToCreate.setDueDate(tools.stringToData(redmineModel.getEndDate()));
        //自定义字段添加值
        //变更项目
        issueToCreate.addCustomField(CustomFieldFactory.create(4,"custom_field_values","2019117 电商APP2019YH项目"));
        //下发需求ID或线上问题ID
        issueToCreate.addCustomField(CustomFieldFactory.create(5,"custom_field_values",redmineModel.getId()));
        issueToCreate.setEstimatedHours(Float.valueOf(4));
        issueToCreate.setTracker(tracker);
        issueManager.createIssue(issueToCreate);
        return  redmine.selectRedmine(redmineModel);

    }

根据条件搜索redmine

1.我这个方法是根据redmine主题搜索的redmine号。返回的是一个redmine号
2.上一个方法创建的redmine,进行获取创建的redmine是多少

public int selectRedmine(RedmineModel redmineModel) throws RedmineException {
        RedmineManager mgr = RedmineManagerFactory.createWithUserAuth("http://redmine.springgroup.cn/redmine/projects/"+redmineModel.getIssueTitle(),redmineModel.getLogin(),redmineModel.getPassword());
        IssueManager issueManager = mgr.getIssueManager();

        Params params = new Params();
        params.add("utf8", "✓");
        params.add("set_filter", "1");
        params.add("f[]", "status_id");
        params.add("op[status_id]", "o");
        params.add("f[]", "subject");
        params.add("op[subject]","~");
        params.add("v[subject][]",redmineModel.getSubject());
        params.add("f[]","created_on");
        params.add("op[created_on]","t");
        params.add("f[]","");
        params.add("c[]","tracker");
        params.add("c[]","subject");
        params.add("c[]","cf_4");
        params.add("c[]","status");
        params.add("c[]","author");
        params.add("c[]","assigned_to");
        params.add("c[]","due_date");
        params.add("c[]","updated_on");
        params.add("group_by","");
        params.add("t[]","");

        ResultsWrapper<Issue> result = issueManager.getIssues(params);
        Issue issue = result.getResults().get(0);
        String id = issue.getId().toString();
        return Integer.parseInt(id);
    }

添加到redmine的备注

1.redmineModel.getRemarks()需要添加到话String类型
2.redmineModel.getRedminNum()需要添加的redmine号
3.issue.getDescription()获取redmine描述的信息

public void modifyRedmine(RedmineModel redmineModel) throws RedmineException {
        RedmineManager mgr = RedmineManagerFactory.createWithUserAuth("http://redmine.springgroup.cn/redmine",redmineModel.getLogin(),redmineModel.getPassword());
        IssueManager issueManager = mgr.getIssueManager();
        Issue issue = issueManager.getIssueById(redmineModel.getRedminNum());
        issue.setNotes(redmineModel.getRemarks());
        issueManager.update(issue);
        System.out.println(issue.getDescription());
    }

修改redmine的状态

1.redmineModel.getRedminNum() redmine号
2.redmineModel.getStatusId()状态码根据下图获取
3.需要修改为关闭StatusId=5


图片.png
public void submissionRedmine(RedmineModel redmineModel) throws RedmineException {
        RedmineManager mgr = RedmineManagerFactory.createWithUserAuth("http://redmine.springgroup.cn/redmine",redmineModel.getLogin(),redmineModel.getPassword());
        IssueManager issueManager = mgr.getIssueManager();
        Issue issue = issueManager.getIssueById(redmineModel.getRedminNum());
        issue.setStatusId(redmineModel.getStatusId());
        issueManager.update(issue);
    }

提交附件到redmine中

1.redmineModel.getRedminNum()redmine号
2.localPath 文件路径

public void updatefileRedmine(RedmineModel redmineModel) throws RedmineException, IOException {
        RedmineManager mgr = RedmineManagerFactory.createWithUserAuth("http://redmine.springgroup.cn/redmine",redmineModel.getLogin(),redmineModel.getPassword());
        IssueManager issueManager = mgr.getIssueManager();
        Issue issue = issueManager.getIssueById(redmineModel.getRedminNum());
        String localPath = "C:\\Users\\004712\\Desktop\\CheckRedmine.py";
        File attachmentFile = new File(localPath);
        if(attachmentFile != null){
            AttachmentManager attachmentMgr = mgr.getAttachmentManager();
            attachmentMgr.addAttachmentToIssue(issue.getId(), attachmentFile, "application/octet-stream");
        }
    }

第一次写redmine的集成,大家可以一起相互学习

相关文章

网友评论

      本文标题:Java集成redmineapi

      本文链接:https://www.haomeiwen.com/subject/kddgyctx.html