Index: src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraMojo.java	(revision 611526)
+++ src/main/java/org/apache/maven/plugin/jira/JiraMojo.java	(working copy)
@@ -159,6 +159,15 @@
     private String typeIds;
 
     /**
+     * Sets the column names that you want shown on the report.
+     * Valid columns are: Key, Summary, Status, Resolution, Assignee, Reporter, Type, Priority, Version, Fix Version, Component.
+     * Multiple values can be separated by commas.
+     *
+     * @parameter default-value=""
+     */
+    private String columnNames;
+
+    /**
      * Defines the JIRA username for authentication into a private JIRA installation.
      *
      * @parameter default-value=""
@@ -209,7 +218,7 @@
 
             if ( new File( jiraXmlPath ).exists() )
             {
-                report = new JiraReportGenerator( jiraXmlPath );
+                report = new JiraReportGenerator( jiraXmlPath, columnNames );
 
                 report.doGenerateReport( getBundle( locale ), getSink() );
             }
Index: src/main/java/org/apache/maven/plugin/jira/JiraReportGenerator.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraReportGenerator.java	(revision 611526)
+++ src/main/java/org/apache/maven/plugin/jira/JiraReportGenerator.java	(working copy)
@@ -31,6 +31,23 @@
  */
 public class JiraReportGenerator
 {
+    private static final String[] AVAIL_COLUMNS = new String[] {
+        /* 0  */ "key",
+        /* 1  */ "summary",
+        /* 2  */ "status",
+        /* 3  */ "resolution",
+        /* 4  */ "assignee",
+        /* 5  */ "reporter",
+        /* 6  */ "type",
+        /* 7  */ "priority",
+        /* 8  */ "version",
+        /* 9  */ "fix version",
+        /* 10 */ "component",
+    };
+    private static final int[] DEFAULT_COLUMNS = new int[] {0, 1, 2, 3, 4};
+
+    private int[] columns;
+
     private JiraXML jira;
 
     public JiraReportGenerator()
@@ -38,9 +55,31 @@
 
     }
 
-    public JiraReportGenerator( String xmlPath )
+    public JiraReportGenerator( String xmlPath, String columnNames )
     {
         jira = new JiraXML( xmlPath );
+
+        String[] columnNamesArray = columnNames == null ? null : columnNames.split( "," );
+        int count = 0;
+        columns = new int[columnNamesArray == null ? 0 : columnNamesArray.length];
+        for ( int i = 0; i < columns.length; i++ )
+        {
+            columns[i] = -1;
+            for ( int j = 0; j < AVAIL_COLUMNS.length; j++ )
+            {
+                String columnName = columnNamesArray[i] == null ? "" : columnNamesArray[i].trim();
+                if (AVAIL_COLUMNS[j].equalsIgnoreCase(columnName)) {
+                    columns[i] = j;
+                    count++;
+                    break;
+                }
+            }
+        }
+        if (count == 0)
+        {
+            columns = DEFAULT_COLUMNS;
+        }
+
     }
 
     public void doGenerateEmptyReport( ResourceBundle bundle, Sink sink )
@@ -76,16 +115,56 @@
 
         sink.tableRow();
 
-        sinkHeader( sink, bundle.getString( "report.jira.label.key" ) );
+        for ( int cdx = 0; cdx < columns.length; cdx++ )
+        {
+            switch (columns[cdx]) {
+            case 0:
+                sinkHeader( sink, bundle.getString( "report.jira.label.key" ) );
+                break;
 
-        sinkHeader( sink, bundle.getString( "report.jira.label.summary" ) );
+            case 1:
+                sinkHeader( sink, bundle.getString( "report.jira.label.summary" ) );
+                break;
 
-        sinkHeader( sink, bundle.getString( "report.jira.label.status" ) );
+            case 2:
+                sinkHeader( sink, bundle.getString( "report.jira.label.status" ) );
+                break;
 
-        sinkHeader( sink, bundle.getString( "report.jira.label.resolution" ) );
+            case 3:
+                sinkHeader( sink, bundle.getString( "report.jira.label.resolution" ) );
+                break;
 
-        sinkHeader( sink, bundle.getString( "report.jira.label.by" ) );
+            case 4:
+                sinkHeader( sink, bundle.getString( "report.jira.label.by" ) );
+                break;
 
+            case 5:
+                sinkHeader( sink, bundle.getString( "report.jira.label.reporter" ) );
+                break;
+
+            case 6:
+                sinkHeader( sink, bundle.getString( "report.jira.label.type" ) );
+                break;
+
+            case 7:
+                sinkHeader( sink, bundle.getString( "report.jira.label.priority" ) );
+                break;
+
+            case 8:
+                sinkHeader( sink, bundle.getString( "report.jira.label.version" ) );
+                break;
+
+            case 9:
+                sinkHeader( sink, bundle.getString( "report.jira.label.fixVersion" ) );
+                break;
+
+            case 10:
+                sinkHeader( sink, bundle.getString( "report.jira.label.component" ) );
+                break;
+            }
+
+        }
+
         sink.tableRow_();
     }
 
@@ -102,24 +181,59 @@
 
             sink.tableRow();
 
-            sink.tableCell();
+            for ( int cdx = 0; cdx < columns.length; cdx++ )
+            {
+                switch (columns[cdx]) {
+                case 0:
+                    sink.tableCell();
+                    sink.link( issue.getLink() );
+                    sink.text( issue.getKey() );
+                    sink.link_();
+                    sink.tableCell_();
+                    break;
 
-            sink.link( issue.getLink() );
+                case 1:
+                    sinkCell( sink, issue.getSummary() );
+                    break;
 
-            sink.text( issue.getKey() );
+                case 2:
+                    sinkCell( sink, issue.getStatus() );
+                    break;
 
-            sink.link_();
+                case 3:
+                    sinkCell( sink, issue.getResolution() );
+                    break;
 
-            sink.tableCell_();
+                case 4:
+                    sinkCell( sink, issue.getAssignee() );
+                    break;
 
-            sinkCell( sink, issue.getSummary() );
+                case 5:
+                    sinkCell( sink, issue.getReporter() );
+                    break;
 
-            sinkCell( sink, issue.getStatus() );
+                case 6:
+                    sinkCell( sink, issue.getType() );
+                    break;
 
-            sinkCell( sink, issue.getResolution() );
+                case 7:
+                    sinkCell( sink, issue.getPriority() );
+                    break;
 
-            sinkCell( sink, issue.getAssignee() );
+                case 8:
+                    sinkCell( sink, issue.getVersion() );
+                    break;
 
+                case 9:
+                    sinkCell( sink, issue.getFixVersion() );
+                    break;
+
+                case 10:
+                    sinkCell( sink, issue.getComponent() );
+                    break;
+                }
+            }
+
             sink.tableRow_();
         }
 
Index: src/main/resources/jira-report.properties
===================================================================
--- src/main/resources/jira-report.properties	(revision 611526)
+++ src/main/resources/jira-report.properties	(working copy)
@@ -25,3 +25,9 @@
 report.jira.label.status=Status
 report.jira.label.resolution=Resolution
 report.jira.label.by=By
+report.jira.label.type=Type
+report.jira.label.priority=Priority
+report.jira.label.reporter=Reporter
+report.jira.label.version=Version
+report.jira.label.fixVersion=Fix Version
+report.jira.label.component=Component

