下面来说说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
![](https://img.haomeiwen.com/i17281807/5cc3e9e450aa3037.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的集成,大家可以一起相互学习
网友评论