You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by ca...@apache.org on 2005/08/12 20:57:53 UTC
svn commit: r232355 - in /maven/maven-1/plugins/trunk/jira: plugin.jelly
plugin.properties src/main/org/apache/maven/jira/JiraDownloader.java
src/plugin-resources/jira.jsl xdocs/changes.xml xdocs/faq.fml
xdocs/goals.xml xdocs/properties.xml
Author: carlos
Date: Fri Aug 12 11:57:49 2005
New Revision: 232355
URL: http://svn.apache.org/viewcvs?rev=232355&view=rev
Log:
Authentication support for access a private Jira instalation. MPJIRA-8
Enable retrieving component-specific issues. MPJIRA-11
MPJIRA-13
Modified:
maven/maven-1/plugins/trunk/jira/plugin.jelly
maven/maven-1/plugins/trunk/jira/plugin.properties
maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java
maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl
maven/maven-1/plugins/trunk/jira/xdocs/changes.xml
maven/maven-1/plugins/trunk/jira/xdocs/faq.fml
maven/maven-1/plugins/trunk/jira/xdocs/goals.xml
maven/maven-1/plugins/trunk/jira/xdocs/properties.xml
Modified: maven/maven-1/plugins/trunk/jira/plugin.jelly
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/plugin.jelly?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/plugin.jelly (original)
+++ maven/maven-1/plugins/trunk/jira/plugin.jelly Fri Aug 12 11:57:49 2005
@@ -54,8 +54,18 @@
project="${pom}"
output="${maven.build.dir}/jira/jira-results.xml"
nbEntries="${maven.jira.nbentries}"
+ statusIds="${maven.jira.status}"
+ filter="${maven.jira.filter}"
+ resolutionIds="${maven.jira.resolution}"
+ priorityIds="${maven.jira.priority}"
+ webUser="${maven.jira.webUser}"
+ webPassword="${maven.jira.webPassword}"
+ jiraUser="${maven.jira.jiraUser}"
+ jiraPassword="${maven.jira.jiraPassword}"
+ component="${maven.jira.component}"
/>
+ <mkdir dir="${maven.gen.docs}"/>
<doc:jslFile
input="${maven.build.dir}/jira/jira-results.xml"
output="${maven.gen.docs}/jira.xml"
@@ -71,4 +81,4 @@
</copy>
</goal>
-</project>
\ No newline at end of file
+</project>
Modified: maven/maven-1/plugins/trunk/jira/plugin.properties
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/plugin.properties?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/plugin.properties (original)
+++ maven/maven-1/plugins/trunk/jira/plugin.properties Fri Aug 12 11:57:49 2005
@@ -17,4 +17,13 @@
# -------------------------------------------------------------------
# P L U G I N P R O P E R I E S
# -------------------------------------------------------------------
+maven.jira.webUser=
+maven.jira.webPassword=
+maven.jira.jiraUser=
+maven.jira.jiraPassword=
maven.jira.nbentries=1000
+maven.jira.filter=
+maven.jira.status=Open,In Progress,Reopened
+maven.jira.resolution=Unresolved
+maven.jira.priority=
+maven.jira.component=
Modified: maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java (original)
+++ maven/maven-1/plugins/trunk/jira/src/main/org/apache/maven/jira/JiraDownloader.java Fri Aug 12 11:57:49 2005
@@ -17,184 +17,471 @@
* ====================================================================
*/
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpState;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.StatusLine;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.methods.GetMethod;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.apache.maven.jelly.MavenJellyContext;
import org.apache.maven.project.Project;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-
-public class JiraDownloader
-{
+/**
+ * Gets relevant issues in RSS from a given JIRA installation.
+ *
+ * Based on version 1.1.2 and patch by Dr. Spock (MPJIRA-8)
+ *
+ * @author mfranken@xebia.com
+ */
+public final class JiraDownloader {
/**
- * Log for debug output
+ * Log for debug output.
*/
- private static Log LOG = LogFactory.getLog(JiraDownloader.class);
-
- /** Output file for xml document */
+ private static Log log = LogFactory.getLog(JiraDownloader.class);
+
+ /** Output file for xml document. */
private File output;
-
- /** Number of entries max */
+
+ /** The maximum number of entries to show. */
private int nbEntriesMax;
-
+
+ /** The filter to apply to query to JIRA. */
+ private String filter;
+
+ /** Ids of status to show, as comma separated string. */
+ private String statusIds;
+
+ /** Ids of resolution to show, as comma separated string. */
+ private String resolutionIds;
+
+ /** Ids of priority to show, as comma separated string. */
+ private String priorityIds;
+
+ /** The component to show. */
+ private String component;
+
+ /** The username to log into JIRA. */
+ private String jiraUser;
+
+ /** The password to log into JIRA. */
+ private String jiraPassword;
+
+ /** The username to log into webserver. */
+ private String webUser;
+
+ /** The password to log into webserver. */
+ private String webPassword;
+
+ /** The maven project. */
private Project project;
-
- /**
- * Set the output file for the log.
- * @param output the output file
- */
- public void setOutput(File output)
- {
- this.output = output;
- }
-
- /**
- * @return Project
- */
- public Object getProject()
- {
- return project;
+
+ /** Mapping containing all JIRA status values. */
+ private static Map statusMap = new HashMap();
+
+ /** Mapping containing all JIRA resolution values. */
+ private static Map resolutionMap = new HashMap();
+
+ /** Mapping containing all JIRA priority values. */
+ private static Map priorityMap = new HashMap();
+
+ static {
+ statusMap.put("Open", "1");
+ statusMap.put("In Progress", "3");
+ statusMap.put("Reopened", "4");
+ statusMap.put("Resolved", "5");
+ statusMap.put("Closed", "6");
+
+ resolutionMap.put("Unresolved", "-1");
+ resolutionMap.put("Fixed", "1");
+ resolutionMap.put("Won't Fix", "2");
+ resolutionMap.put("Duplicate", "3");
+ resolutionMap.put("Incomplete", "4");
+ resolutionMap.put("Cannot Reproduce", "5");
+
+ priorityMap.put("Blocker", "1");
+ priorityMap.put("Critical", "2");
+ priorityMap.put("Major", "3");
+ priorityMap.put("Minor", "4");
+ priorityMap.put("Trivial", "5");
}
/**
- * Sets the project.
- * @param project The project to set
+ * Creates a filter given the maven.jira parameters and some defaults.
+ *
+ * @return request parameters to be added to URL used for downloading the JIRA issues
*/
- public void setProject(Object project)
- {
- //System.out.println("Setting project: " + project);
- this.project = (Project) project;
+ private String createFilter() {
+ if (this.filter != null && this.filter.length() > 0) {
+ if (this.filter.charAt(0) == '&') {
+ return this.filter.substring(1);
+ }
+ return this.filter;
+ }
+
+ StringBuffer localFilter = new StringBuffer();
+ // get the Status Ids
+ if (statusIds != null) {
+ String[] stats = statusIds.split(",");
+ for (int i = 0; i < stats.length; i++) {
+ String statusParam = (String) statusMap.get(stats[i]);
+ if (statusParam != null) {
+ localFilter.append("&statusIds=" + statusParam);
+ }
+ }
+ }
+ // get the Priority Ids
+ if (priorityIds != null) {
+ String[] prios = priorityIds.split(",");
+ for (int i = 0; i < prios.length; i++) {
+ String priorityParam = (String) priorityMap.get(prios[i]);
+ if (priorityParam != null) {
+ localFilter.append("&priorityIds=" + priorityParam);
+ }
+ }
+ }
+ if (resolutionIds != null) {
+ // get the Resolution Ids
+ String[] resos = resolutionIds.split(",");
+ for (int i = 0; i < resos.length; i++) {
+ String resoParam = (String) resolutionMap.get(resos[i]);
+ if (resoParam != null) {
+ localFilter.append("&resolutionIds=" + resoParam);
+ }
+ }
+ }
+ // add all components
+ if (component != null) {
+ String[] components = component.split(",");
+ for (int i = 0; i < components.length; i++) {
+ if (components[i].length() > 0) {
+ localFilter.append("&component=" + components[i]);
+ }
+ }
+ }
+
+ // add default sorting (by priority and then creation date)
+ String sort = "&sorter/field=created&sorter/order=DESC" + "&sorter/field=priority&sorter/order=DESC";
+ return localFilter + sort;
}
-
+
/**
- * Sets the number of entries.
- * @param nbEntries The number of entries
+ * Execute the query on the JIRA server.
+ *
+ * @throws Exception
+ * on error
*/
- public void setNbEntries(int nbEntries)
- {
- nbEntriesMax = nbEntries;
- }
-
- public void doExecute() throws Exception
- {
- MavenJellyContext ctx;
- String proxyHost;
- String proxyPort;
- String proxyUser;
- String proxyPass;
- String link;
-
- if (getProject() == null)
- {
+ public void doExecute() throws Exception {
+ if (project == null) {
throw new Exception("No project set.");
- }
- else
- {
- if (((Project) getProject()).getIssueTrackingUrl() == null)
- {
+ } else {
+ if (project.getIssueTrackingUrl() == null) {
throw new Exception("No issue tracking url set.");
}
- else
- {
- String url = ((Project) getProject()).getIssueTrackingUrl();
- int pos = url.indexOf("?");
- String id = url.substring(pos+4);
- url = url.substring(0, url.lastIndexOf("/"));
- link = url + "/secure/IssueNavigator.jspa?view=rss&pid=" + id + "&sorter/field=issuekey&sorter/order=DESC&sorter/field=status&sorter/order=DESC&tempMax=" + String.valueOf(nbEntriesMax) + "&reset=true&decorator=none";
- }
- }
-
- ctx = ((Project) getProject()).getContext();
-
- proxyHost = ctx.getProxyHost();
- proxyPort = ctx.getProxyPort();
- proxyUser = ctx.getProxyUserName();
- proxyPass = ctx.getProxyPassword();
-
- try
- {
+ }
+
+ try {
HttpClient cl = new HttpClient();
+ HttpState state = new HttpState();
HostConfiguration hc = new HostConfiguration();
+ cl.setHostConfiguration(hc);
+ cl.setState(state);
- if (proxyHost != null)
- {
- hc.setProxy(proxyHost, Integer.parseInt(proxyPort));
+ determineProxy(cl);
+ // get the Jira URL and project id
+ String url = project.getIssueTrackingUrl();
+ // chop off the parameter part
+ int pos = url.indexOf("?");
+ // and get the id while we're at it
+ String id = "";
+ if (pos >= 0) {
+ // url
+ id = url.substring(url.lastIndexOf("=") + 1);
}
- HttpState state = new HttpState();
+ // TODO: fail the build in the else block, issueTrackingUrl has to include id
- if (proxyUser != null && proxyPass != null)
- {
- state.setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUser, proxyPass));
+ String jiraUrl = url.substring(0, url.lastIndexOf("/"));
+ if (jiraUrl.endsWith("secure")) {
+ jiraUrl = jiraUrl.substring(0, jiraUrl.lastIndexOf("/"));
}
+ log.info("Jira lives at: " + jiraUrl);
+ doAuthentication(cl, jiraUrl);
+
+ // create the URL for getting the proper iussues from JIRA
+ String fullURL = jiraUrl + "/secure/IssueNavigator.jspa?view=rss&pid=" + id;
+ fullURL += createFilter();
+ fullURL += "&tempMax=" + nbEntriesMax + "&reset=true&decorator=none";
- cl.setHostConfiguration(hc);
- cl.setState(state);
-
// execute the GET
- GetMethod gm = download(cl, link);
- StatusLine sl = gm.getStatusLine();
-
- if (sl == null) {
- LOG.info("Unknown error validating link : " + link);
- return;
- }
-
- if (gm.getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY)
- {
- Header locationHeader = gm.getResponseHeader("Location");
- if (locationHeader == null) {
- LOG.info("Site sent redirect, but did not set Location header");
- } else {
- String newLink = locationHeader.getValue();
- LOG.debug("Following 1 redirect to " + newLink);
- gm = download(cl, newLink);
- }
- }
+ download(cl, fullURL);
+ } catch (Exception e) {
+ log.error("Error accessing " + project.getIssueTrackingUrl(), e);
+ }
+ }
- if (gm.getStatusCode() != HttpStatus.SC_OK)
- {
- String msg = "Received: [" + gm.getStatusCode() + "] for " + link;
- LOG.info(msg);
- System.out.println(msg);
+ /**
+ * Authenticate against webserver and into JIRA if we have to.
+ *
+ * @param client
+ * the HttpClient
+ * @param jiraUrl
+ * the JIRA installation
+ */
+ private void doAuthentication(HttpClient client, final String jiraUrl) {
+ // check and prepare for basic authentication
+ if (webUser != null && webUser.length() > 0) {
+ client.getState().setAuthenticationPreemptive(true);
+ Credentials defaultcreds = new UsernamePasswordCredentials(webUser, webPassword);
+ log.info("Using username: " + webUser + " for Basic Authentication against the webserver at " + jiraUrl);
+ client.getState().setCredentials(null, null, defaultcreds);
+ }
+
+ // log into JIRA if we have to
+ String loginUrl = null;
+ if (jiraUser != null && jiraUser.length() > 0 && jiraPassword != null) {
+ StringBuffer loginLink = new StringBuffer(jiraUrl);
+ loginLink.append("/login.jsp?os_destination=/secure/");
+ loginLink.append("&os_username=").append(jiraUser);
+ log.info("Login URL: " + loginLink + "&os_password=*******");
+ loginLink.append("&os_password=").append(jiraPassword);
+ loginUrl = loginLink.toString();
+ }
+
+ // execute the login
+ if (loginUrl != null) {
+ GetMethod loginGet = new GetMethod(loginUrl);
+ try {
+ client.executeMethod(loginGet);
+ log.info("Succesfully logged in into JIRA.");
+ } catch (Exception e) {
+ if (log.isDebugEnabled()) {
+ log.error("Error trying to login into JIRA:", e);
+ } else {
+ log.error("Error trying to login into JIRA. Cause is: " + e.getLocalizedMessage());
+ }
+ // continue any way, probably will fail later if authentication was necesaaray afterall
}
+ }
+ }
+ /**
+ * Setup proxy access if we have to.
+ *
+ * @param client
+ * the HttpClient
+ */
+ private void determineProxy(HttpClient client) {
+ // see whether there is any proxy defined in maven
+ if (project == null) {
+ log.error("No project set. No proxy info available.");
+ return;
}
- catch (Exception e)
- {
- LOG.warn("Error accessing " + link);
- e.printStackTrace();
+ MavenJellyContext ctx = project.getContext();
+ if (ctx == null) {
+ log.error("Maven project has no context. No proxy info available.");
+ return;
+ }
+ String proxyHost = ctx.getProxyHost();
+
+ if (proxyHost != null) {
+ String proxyPort = ctx.getProxyPort();
+ client.getHostConfiguration().setProxy(proxyHost, Integer.parseInt(proxyPort));
+ log.info("Using proxy: " + proxyHost + " at port " + proxyPort);
+ String proxyUser = ctx.getProxyUserName();
+ if (proxyUser != null) {
+ log.info("Using proxy user: " + proxyUser);
+ String proxyPass = ctx.getProxyPassword();
+ client.getState().setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUser, proxyPass));
+ }
}
}
-
- private GetMethod download(HttpClient cl, String link)
- {
- GetMethod gm = new GetMethod(link);
- try
- {
- System.out.println("Downloading " + link);
+
+ /**
+ * Downloads the given link using the configured HttpClient, possibly following redirects.
+ *
+ * @param cl
+ * the HttpClient
+ * @param link
+ * the JiraUrl
+ * @return
+ */
+ private void download(final HttpClient cl, final String link) {
+ try {
+ GetMethod gm = new GetMethod(link);
+ log.info("Downloading " + link);
gm.setFollowRedirects(true);
cl.executeMethod(gm);
final String strGetResponseBody = gm.getResponseBodyAsString();
+ // write the reponse to file
PrintWriter pw = new PrintWriter(new FileWriter(output));
pw.print(strGetResponseBody);
pw.close();
+ StatusLine sl = gm.getStatusLine();
+ if (sl == null) {
+ log.info("Unknown error validating link : " + link);
+ return;
+ }
+
+ // if we get a redirect, do so
+ if (gm.getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY) {
+ Header locationHeader = gm.getResponseHeader("Location");
+ if (locationHeader == null) {
+ log.info("Site sent redirect, but did not set Location header");
+ } else {
+ String newLink = locationHeader.getValue();
+ log.debug("Following redirect to " + newLink);
+ download(cl, newLink);
+ }
+ }
+
+ if (gm.getStatusCode() != HttpStatus.SC_OK) {
+ log.warn("Received: [" + gm.getStatusCode() + "]");
+ }
+ } catch (HttpException e) {
+ if (log.isDebugEnabled()) {
+ log.error("Error downloading issues from JIRA:", e);
+ } else {
+ log.error("Error downloading issues from JIRA. Cause is: " + e.getLocalizedMessage());
+ }
+ } catch (IOException e) {
+ if (log.isDebugEnabled()) {
+ log.error("Error downloading issues from JIRA:", e);
+ } else {
+ log.error("Error downloading issues from JIRA. Cause is: " + e.getLocalizedMessage());
+ }
}
- catch (Exception e)
- {
- System.out.println("Error downloading " + link);
- }
- return gm;
}
+
+ /**
+ * Set the output file for the log.
+ *
+ * @param thisOutput
+ * the output file
+ */
+ public void setOutput(final File thisOutput) {
+ this.output = thisOutput;
+ }
+
+ /**
+ * Sets the project.
+ *
+ * @param thisProject
+ * The project to set
+ */
+ public void setProject(final Object thisProject) {
+ this.project = (Project) thisProject;
+ }
+
+ /**
+ * Sets the maximum number of Issues to show.
+ *
+ * @param nbEntries
+ * The maximum number of Issues
+ */
+ public void setNbEntries(final int nbEntries) {
+ nbEntriesMax = nbEntries;
+ }
+
+ /**
+ * Sets the statusIds.
+ *
+ * @param thisStatusIds
+ * The id(s) of the status to show, as comma separated string
+ */
+ public void setStatusIds(final String thisStatusIds) {
+ statusIds = thisStatusIds;
+ }
+
+ /**
+ * Sets the priorityIds.
+ *
+ * @param thisPriorityIds
+ * The id(s) of the priority to show, as comma separated string
+ */
+ public void setPriorityIds(final String thisPriorityIds) {
+ priorityIds = thisPriorityIds;
+ }
+
+ /**
+ * Sets the resolutionIds.
+ *
+ * @param thisResolutionIds
+ * The id(s) of the resolution to show, as comma separated string
+ */
+ public void setResolutionIds(final String thisResolutionIds) {
+ resolutionIds = thisResolutionIds;
+ }
+
+ /**
+ * Sets the password for authentication against the webserver.
+ *
+ * @param thisWebPassword
+ * The password of the webserver
+ */
+ public void setWebPassword(final String thisWebPassword) {
+ this.webPassword = thisWebPassword;
+ }
+
+ /**
+ * Sets the username for authentication against the webserver.
+ *
+ * @param thisWebUser
+ * The username of the webserver
+ */
+ public void setWebUser(final String thisWebUser) {
+ this.webUser = thisWebUser;
+ }
+
+ /**
+ * Sets the password to log into a secured JIRA.
+ *
+ * @param thisJiraPassword
+ * The password for JIRA
+ */
+ public void setJiraPassword(final String thisJiraPassword) {
+ this.jiraPassword = thisJiraPassword;
+ }
+
+ /**
+ * Sets the username to log into a secured JIRA.
+ *
+ * @param thisJiraUser
+ * The username for JIRA
+ */
+ public void setJiraUser(final String thisJiraUser) {
+ this.jiraUser = thisJiraUser;
+ }
+
+ /**
+ * Sets the filter to apply to query to JIRA.
+ *
+ * @param thisFilter
+ * The filter to query JIRA
+ */
+ public void setFilter(final String thisFilter) {
+ this.filter = thisFilter;
+ }
+
+ /**
+ * Sets the component(s) to apply to query JIRA.
+ *
+ * @param theseComponents
+ * The id(s) of components to show, as comma separated string
+ */
+ public void setComponent(final String theseComponents) {
+ this.component = theseComponents;
+ }
+
}
Modified: maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl (original)
+++ maven/maven-1/plugins/trunk/jira/src/plugin-resources/jira.jsl Fri Aug 12 11:57:49 2005
@@ -42,22 +42,30 @@
<tr>
<th style="width:150px">Key</th>
<th>Summary</th>
- <th style="width:150px">Status</th>
- <th style="width:150px">Resolution</th>
- <th style="width:150px">By</th>
+ <th style="width:150px">Created</th>
+ <th style="width:50px">Priority</th>
+ <th style="width:50px">Status</th>
+ <th style="width:100px">Resolution</th>
+ <th style="width:100px">Assigned to</th>
+ <th style="width:100px">Reported by</th>
</tr>
</thead>
<tbody>
<x:forEach var="entry" select="item">
<j:set var="key"><x:expr select="$entry/key"/></j:set>
<j:set var="link"><x:expr select="$entry/link"/></j:set>
+ <j:set var="createdate"><x:expr select="$entry/created"/></j:set>
+ <j:set var="priority"><x:expr select="$entry/priority"/></j:set>
<j:set var="status"><x:expr select="$entry/status"/></j:set>
<j:set var="summary"><x:expr select="$entry/summary"/></j:set>
<j:set var="assignee"><x:expr select="$entry/assignee"/></j:set>
+ <j:set var="reporter"><x:expr select="$entry/reporter"/></j:set>
<j:set var="resolution"><x:expr select="$entry/resolution"/></j:set>
<tr>
<td><a href="${link}">${key}</a></td>
<td>${summary}</td>
+ <td>${createdate}</td>
+ <td>${priority}</td>
<td>
<j:choose>
<j:when test="${status.equalsIgnoreCase('Closed')}">
@@ -82,6 +90,7 @@
</td>
<td>${resolution}</td>
<td>${assignee}</td>
+ <td>${reporter}</td>
</tr>
</x:forEach>
</tbody>
Modified: maven/maven-1/plugins/trunk/jira/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/changes.xml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/changes.xml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/changes.xml Fri Aug 12 11:57:49 2005
@@ -24,6 +24,10 @@
<author email="brett@apache.org">Brett Porter</author>
</properties>
<body>
+ <release version="1.2-SNAPSHOT" date="in SVN">
+ <action dev="carlos" type="fix" issue="MPJIRA-11" due-to="Michael Franken">Enable retrieving component-specific issues.</action>
+ <action dev="carlos" type="fix" issue="MPJIRA-8" due-to="Michael Franken">Authentication support for access a private Jira instalation.</action>
+ </release>
<release version="1.1.2" date="2004-10-23">
<action dev="evenisse" type="fix" issue="MPJIRA-3">Fix jira downloading url for some jira instance like Apache.</action>
</release>
Modified: maven/maven-1/plugins/trunk/jira/xdocs/faq.fml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/faq.fml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/faq.fml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/faq.fml Fri Aug 12 11:57:49 2005
@@ -35,12 +35,15 @@
<source><issueTrackingUrl>http://jira.codehaus.org/secure/BrowseProject.jspa?id=10450</issueTrackingUrl></source>
<p>
- 2. make sure that your project allows group Anyone to view jira issues
- (you may or may not need to also set your jira installation type to
- public - this is in General Configuration under administration).
+ 2. Determine the credentials to log into the webserver, if any. The plugin supports basic authentication (and SSL).
+ Add the credentials to the project.properties, as maven.jira.webUser and maven.jira.webPassword
</p>
<p>
- 3. log out of jira (if you are using Remember me feature) and test your setup
+ 3. Determine the JIRA account to login to the JIRA installation.
+ Add the credentials to the project.properties, as maven.jira.jiraUser and maven.jira.jiraPassword
+ </p>
+ <p>
+ 4. log out of jira (if you are using Remember me feature) and test your setup
by going to url like this one:
</p>
<source>[JIRA URL]/secure/IssueNavigator.jspa?view=rss&pid=[JIRA PROJECT ID]&sorter/field=issuekey&sorter/order=DESC&sorter/field=status&sorter/order=DESC&tempMax=1000&reset=true</source>
@@ -48,13 +51,27 @@
<source>http://jira.codehaus.org/secure/IssueNavigator.jspa?view=rss&pid=10450&sorter/field=issuekey&sorter/order=DESC&sorter/field=status&sorter/order=DESC&tempMax=1000&reset=true</source>
<p>
- 4. add this to your project.xml in reports section
+ 5. add this to your project.xml in reports section
</p>
<source><report>maven-jira-plugin</report></source>
<p>
- 5. run site:generate and you should have jira.html in your ${basedir}/target/docs directory
+ 6. run maven site (or just maven maven-jira-plugin:report xdoc) and you should have jira.html in your ${basedir}/target/docs directory
</p>
</answer>
+ </faq>
+ <faq id="untrusted cert">
+ <question>
+ My JIRA installation runs SSL with a self signed/home brewn certificate.
+ I get an error message that the certificate is untrusted. How do I proceed?
+ </question>
+ <answer>
+ <p>
+ Add the server certificate to your JAVA. You can get the certificate by exporting it from your browser.
+ With IE you click on the certificate info, go to the details TAB and export as .DER by clicking on 'Copy to File...'.
+ Using SUN's keytool you can import the certificate in your 'truststore'. It is located in $JAVA_HOME/jre/lib/security/cacerts
+ Import it using <source>keytool -import -file <servercert>.cer -keystore cacerts</source>
+ </p>
+ </answer>
</faq>
</part>
-</faqs>
\ No newline at end of file
+</faqs>
Modified: maven/maven-1/plugins/trunk/jira/xdocs/goals.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/goals.xml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/goals.xml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/goals.xml Fri Aug 12 11:57:49 2005
@@ -25,18 +25,18 @@
<goals>
<goal>
<name>maven-jira-plugin:deregister</name>
- <description>
+ <description>The standard goal name for report plugins to register themselves with the site plugin.
</description>
</goal>
<goal>
<name>maven-jira-plugin:register</name>
- <description>
+ <description>The standard goal name for report plugins to deregister themselves from the site.
</description>
</goal>
<goal>
<name>maven-jira-plugin:report</name>
- <description>Generate report with all entries defined in Jira.</description>
+ <description>Generate report for entries defined in Jira.</description>
</goal>
</goals>
</body>
-</document>
\ No newline at end of file
+</document>
Modified: maven/maven-1/plugins/trunk/jira/xdocs/properties.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/jira/xdocs/properties.xml?rev=232355&r1=232354&r2=232355&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/jira/xdocs/properties.xml (original)
+++ maven/maven-1/plugins/trunk/jira/xdocs/properties.xml Fri Aug 12 11:57:49 2005
@@ -28,18 +28,143 @@
<th>Property</th>
<th>Optional?</th>
<th>Description</th>
+ <th>Default value</th>
</tr>
<tr>
<td>maven.jira.nbentries</td>
<td>Yes</td>
<td>
<p>
- Defines the number of entries we want to obtain into the report.
- Default value is <code>1000</code>.
+ Defines the maximum number of issues we want to obtain into the report.
+ </p>
+ </td>
+ <td>
+ <p>
+ <code>1000</code>.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>maven.jira.component</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Sets the component(s) of the project you want to limit your report to.
+ Multiple components can be separated by commas (such as <code>10011,10012</code>).
+ </p>
+ </td>
+ <td>
+ <p>
+ empty, meaning all components.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>maven.jira.status</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Sets the status(es) of the project you want to limit your report to.
+ Valid statuses are: <code>Open, In Progress, Reopened, Resolved and Closed</code>.
+ Multiple values can be separated by commas.
+ </p>
+ </td>
+ <td>
+ <p>
+ <code>Open, In Progress, Reopened</code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>maven.jira.resolution</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Sets the resolution(s) of the project you want to limit your report to.
+ Valid statuses are: <code>Unresolved, Fixed, Won't Fix, Duplicate, Incomplete, Cannot Reproduce</code>.
+ Multiple values can be separated by commas.
+ </p>
+ </td>
+ <td>
+ <p>
+ <code>Unresolved</code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>maven.jira.priority</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Sets the priority(s) of the project you want to limit your report to.
+ Valid statuses are: <code>Blocker, Critical, Major, Minor, Trivial</code>.
+ Multiple values can be separated by commas.
+ </p>
+ </td>
+ <td>
+ <p>
+ empty, meaning any priority.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>maven.jira.filter</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Defines the filter parameters to restrict the result issues from Jira.
+ The filter parameters property must use the same format of url parameters from the Jira search url.
+ Example: <code>status=1&resolution=-1&priority=1&priority=3&priority=4&sorter/field=issuekey&sorter/order=DESC</code>
+ </p>
+ <p>
+ <b>Note</b>: This string should not contain the parameters <code>pid</code>, <code>tempMax</code>
+ and <code>view</code>.<br/>
+ <b>Note</b>: This filter overrides the status, resolution, priority and component properties.
+ </p>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>maven.jira.jiraUser</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Defines the jira username for authentication into a private Jira instalation.<br/>
+ </p>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>maven.jira.jiraPassword</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Defines the jira password for authentication into a private Jira instalation.
+ </p>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>maven.jira.webUser</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Defines the http user for basic authentication into the Jira webserver.<br/>
+ </p>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>maven.jira.webPassword</td>
+ <td>Yes</td>
+ <td>
+ <p>
+ Defines the http password for basic authentication into the Jira webserver.
</p>
</td>
+ <td></td>
</tr>
</table>
</section>
</body>
-</document>
\ No newline at end of file
+</document>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org