#获得所有Issue的页面 JIRA_ISSUE_FULLCONTENT={domain}/sr/jira.issueviews:searchrequest-fullcontent/temp/SearchRequest.html?pid={pid}&fixfor={fixfor}&resolution=-1&sorter/field=priority&sorter/order=DESC&tempMax=10000
|
- // 获取问题的issueKey <h3 class="formtitle">[SANDBOX-1]
- final static Pattern ISSUE_KEY_PATTERN = Pattern.compile(
- "<h3 class=\"formtitle\">(\\s)+\\[(?s).*?&", Pattern.CANON_EQ);
- // 获得问题的Summary <a
- // href="http://jira.taobao.ali.com/browse/SANDBOX-1">TimeoutThread或Thread.setTimeout</a>
- final static Pattern ISSUE_SUMMARY_PATTERN = Pattern.compile(
- "<h3 class=\"formtitle\">(\\s)+\\[(?s).*? <a href=\""
- + JpContext.jiraDomain
- + "/browse/(\\S)+(-)([0-9])+\">(?s).*?</a>",
- Pattern.CANON_EQ);
- // 获取问题的描述<div id="description_full">......</div>
- final static Pattern ISSUE_DESC_PATTERN = Pattern.compile(
- "<td id=\"descriptionArea\">(?s).*?</td>", Pattern.CANON_EQ);
- // 获取问题的fixversion <b>修复版本:...........</tr>
- final static Pattern ISSUE_FIXVERSION_PATTERN = Pattern.compile(
- "<b>修复版本(?s).*?</tr>", Pattern.CANON_EQ);
- #获得指定issueKey的问题的所有子任务
- JIRA_ISSUESUB_URL={domain}/browse/{issueKey}
使用JIRA的soap客户端来获取jira站点上的所有问题的方法:
首先要实例出一个soap对象
- SOAPSession soapSession = new SOAPSession(new URL(baseUrl));
- soapSession.getJiraSoapService();
这个SOAPSession其实是帮我们封装了 com.atlassian.jira.rpc.soap.service中的一些类。
获取所有的issue
- SearchSoapExerciser se = new SearchSoapExerciser(soapSession);
- // 存储所有问题
- /** 遍历所有的issues */
- try {
- for (RemoteIssue ri : se.testJqlSearch("", 10)) {
遍历后就可以得到所有RemoteIssue对象了。
完整代码在附件中
查看jira的api http://docs.atlassian.com/software/jira/docs/api/rpc-jira-plugin/
,
- package com.test;
- import java.io.IOException;
- import net.sf.mpxj.MPXJException;
- import net.sf.mpxj.ProjectFile;
- import net.sf.mpxj.mpp.MPPReader;
- import net.sf.mpxj.mspdi.MSPDIWriter;
- import net.sf.mpxj.reader.ProjectReader;
- import net.sf.mpxj.writer.ProjectWriter;
- public class Test{
- public static void main(String[] args)throws Exception{
- ProjectReader reader = new MPPReader();
- ProjectFile project;
- try {
- project = reader.read("d:\\native.mpp");
- //生成文件
- ProjectWriter writer = new MSPDIWriter();
- try{
- writer.write(project, "d:\\test.xml");
- }catch(IOException ioe){
- throw ioe;
- }
- } catch (MPXJException mpxje) {
- throw mpxje;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- //实例一个app,这个app可以想象成是一个ms project的应用程序
- /**这里要指明的一点的是,使用这种方法生成*.mpp文件的前提是你的电脑上必须安装有msproject这个软件*/
- app = new DispatchPtr("MSProject.Application");
- /**从这个链接中可以发现app有个成员是http://msdn.microsoft.com/en-us/library/bb236984(v=office.12).aspx*/
- DispatchPtr projects = (DispatchPtr) app.get("Projects");
Use the Add method to add a Project object to the Projects collection. The following example creates a new project without prompting for project information. |
- /**从这个链接中可以发现http://msdn.microsoft.com/en-us/library/bb214615(v=office.12).aspx*/
- DispatchPtr project = (DispatchPtr) projects.invoke("Add");
- //生成一个task集合
- DispatchPtr tasks = (DispatchPtr) project.get("Tasks");
- //之后多次调用来生成一个个任务
- DispatchPtr taskName = (DispatchPtr) tasks.invoke("Add");
- //当然要为任务设置属性:这要是name notes,
- issueName.put("Name", issueKey + ":" + issueSummary );
- issueName.put("Notes", issueDesc );
- issueName.put("OutlineLevel", "1");
- //在task对象中,没有明确的父子关系可以确定,在生成的过程中,都是更具生成的id和UniqueID顺序排下去的
- //唯一可以确定最终在msproject中的结构的就是一个
- OutLineLevel属性了.
- project.invoke("SaveAs", mppPath);
- app.invoke("DocClose" );