Index: src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java	(revision 609484)
+++ src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java	(working copy)
@@ -70,6 +70,10 @@
     private String priorityIds;
     /** The component to show. */
     private String component;
+    /** Ids of type to show, as comma separated string. */
+    private String typeIds;
+    /** The fix version ids to show. */
+    private String fixVersionIds;
     /** The username to log into JIRA. */
     private String jiraUser;
     /** The password to log into JIRA. */
@@ -88,6 +92,8 @@
     protected Map resolutionMap = new HashMap();
     /** Mapping containing all allowed JIRA priority values. */
     protected Map priorityMap = new HashMap();
+    /** Mapping containing all allowed JIRA type values. */
+    protected Map typeMap = new HashMap();
 
     /**
      * Creates a filter given the parameters and some defaults.
@@ -115,7 +121,7 @@
 
                 if ( statusParam != null )
                 {
-                    localFilter.append( "&statusIds=" + statusParam );
+                    localFilter.append( "&status=" + statusParam );
                 }
             }
         }
@@ -131,7 +137,7 @@
 
                 if ( priorityParam != null )
                 {
-                    localFilter.append( "&priorityIds=" + priorityParam );
+                    localFilter.append( "&priority=" + priorityParam );
                 }
             }
         }
@@ -147,7 +153,7 @@
 
                 if ( resoParam != null )
                 {
-                    localFilter.append( "&resolutionIds=" + resoParam );
+                    localFilter.append( "&resolution=" + resoParam );
                 }
             }
         }
@@ -166,6 +172,36 @@
             }
         }
 
+        // get the Type Ids
+        if ( typeIds != null )
+        {
+            String[] types = typeIds.split( "," );
+
+            for ( int i = 0; i < types.length; i++ )
+            {
+                String typeParam = (String) typeMap.get( types[i].trim().toLowerCase() );
+
+                if ( typeParam != null )
+                {
+                    localFilter.append( "&type=" + typeParam);
+                }
+            }
+        }
+
+        // add fix versions
+        if ( fixVersionIds != null )
+        {
+            String[] fixVersions = fixVersionIds.split( "," );
+
+            for ( int i = 0; i < fixVersions.length; i++ )
+            {
+                if ( fixVersions[i].length() > 0 )
+                {
+                    localFilter.append( "&fixfor=" + fixVersions[i].trim() );
+                }
+            }
+        }
+
         // add default sorting (by priority and then creation date)
         String sort = "&sorter/field=created&sorter/order=DESC" + "&sorter/field=priority&sorter/order=DESC";
 
@@ -683,6 +719,26 @@
         this.component = theseComponents;
     }
 
+    /**
+     * Sets the typeIds.
+     *
+     * @param thisTypeIds  The id(s) of the type to show, as comma separated string
+     */
+    public void setTypeIds( String thisTypeIds )
+    {
+        typeIds = thisTypeIds;
+    }
+
+    /**
+     * Sets the fix version id(s) to apply to query JIRA.
+     *
+     * @param theseFixVersionIds The id(s) of fix versions to show, as comma separated string
+     */
+    public void setFixVersionIds( String theseFixVersionIds )
+    {
+        this.fixVersionIds = theseFixVersionIds;
+    }
+
     public void setLog( Log log )
     {
         this.log = log;
Index: src/main/java/org/apache/maven/plugin/jira/JiraDownloader.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraDownloader.java	(revision 609484)
+++ src/main/java/org/apache/maven/plugin/jira/JiraDownloader.java	(working copy)
@@ -48,5 +48,12 @@
         priorityMap.put( "Major", "3" );
         priorityMap.put( "Minor", "4" );
         priorityMap.put( "Trivial", "5" );
+
+        typeMap.put( "bug", "1" );
+        typeMap.put( "new feature", "2" );
+        typeMap.put( "task", "3" );
+        typeMap.put( "improvement", "4" );
+        typeMap.put( "wish", "5" );
+        typeMap.put( "test", "6" );
     }
 }
Index: src/main/java/org/apache/maven/plugin/jira/JiraIssue.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraIssue.java	(revision 609484)
+++ src/main/java/org/apache/maven/plugin/jira/JiraIssue.java	(working copy)
@@ -38,6 +38,18 @@
 
     private String assignee;
 
+    private String reporter;
+
+    private String type;
+
+    private String priority;
+
+    private String version;
+
+    private String fixVersion;
+
+    private String component;
+
     public JiraIssue()
     {
     }
@@ -101,4 +113,64 @@
     {
         this.assignee = assignee;
     }
+
+    public String getReporter()
+    {
+        return reporter;
+    }
+
+    public void setReporter( String reporter )
+    {
+        this.reporter = reporter;
+    }
+
+    public String getType()
+    {
+        return type;
+    }
+
+    public void setType( String type )
+    {
+        this.type = type;
+    }
+
+    public String getPriority()
+    {
+        return priority;
+    }
+
+    public void setPriority( String priority )
+    {
+        this.priority = priority;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion( String version )
+    {
+        this.version = version;
+    }
+
+    public String getFixVersion()
+    {
+        return fixVersion;
+    }
+
+    public void setFixVersion( String fixVersion )
+    {
+        this.fixVersion = fixVersion;
+    }
+
+    public String getComponent()
+    {
+        return component;
+    }
+
+    public void setComponent( String component )
+    {
+        this.component = component;
+    }
 }
Index: src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraMojo.java	(revision 609484)
+++ src/main/java/org/apache/maven/plugin/jira/JiraMojo.java	(working copy)
@@ -138,6 +138,34 @@
     private String component;
 
     /**
+     * Sets the types(s) that you want to limit your report to include.
+     * Valid types are: Bug, New Feature, Task, Improvement, Wish, Test. Multiple
+     * values can be separated by commas.
+     *
+     * @parameter default-value=""
+     */
+    private String typeIds;
+
+    /**
+     * Sets the fix version id(s) that you want to limit your report to include.
+     * These are JIRA's internal version ids, NOT the human readable display ones.
+     * Multiple fix versions can be separated by commas.
+     * If this is set to empty - that means all fix versions.
+     *
+     * @parameter default-value=""
+     */
+    private String fixVersionIds;
+
+    /**
+     * 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=""
@@ -188,7 +216,8 @@
 
             if ( new File( jiraXmlPath ).exists() )
             {
-                report = new JiraReportGenerator( jiraXmlPath );
+                String[] columnNamesArray = columnNames == null ? null : columnNames.split( "," );
+                report = new JiraReportGenerator( jiraXmlPath, columnNamesArray );
 
                 report.doGenerateReport( getBundle( locale ), getSink() );
             }
@@ -252,6 +281,10 @@
 
         jira.setComponent( component );
 
+        jira.setTypeIds( typeIds );
+
+        jira.setFixVersionIds( fixVersionIds );
+
         jira.setStatusIds( statusIds );
 
         jira.setResolutionIds( resolutionIds );
Index: src/main/java/org/apache/maven/plugin/jira/JiraReportGenerator.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraReportGenerator.java	(revision 609484)
+++ 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,30 @@
 
     }
 
-    public JiraReportGenerator( String xmlPath )
+    public JiraReportGenerator( String xmlPath, String[] columnNames )
     {
         jira = new JiraXML( xmlPath );
+
+        int count = 0;
+        columns = new int[columnNames == null ? 0 : columnNames.length];
+        for ( int i = 0; i < columns.length; i++ )
+        {
+            columns[i] = -1;
+            for ( int j = 0; j < AVAIL_COLUMNS.length; j++ )
+            {
+                String columnName = columnNames[i] == null ? "" : columnNames[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 +114,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 +180,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/java/org/apache/maven/plugin/jira/JiraXML.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraXML.java	(revision 609484)
+++ src/main/java/org/apache/maven/plugin/jira/JiraXML.java	(working copy)
@@ -110,6 +110,30 @@
         {
             issue.setAssignee( currentElement );
         }
+        else if ( qName.equals( "reporter" ) )
+        {
+            issue.setReporter( currentElement );
+        }
+        else if ( qName.equals( "type" ) )
+        {
+            issue.setType( currentElement );
+        }
+        else if ( qName.equals( "priority" ) )
+        {
+            issue.setPriority( currentElement );
+        }
+        else if ( qName.equals( "version" ) )
+        {
+            issue.setVersion( currentElement );
+        }
+        else if ( qName.equals( "fixVersion" ) )
+        {
+            issue.setFixVersion( currentElement );
+        }
+        else if ( qName.equals( "component" ) )
+        {
+            issue.setComponent( currentElement );
+        }
 
         currentElement = "";
     }
Index: src/main/resources/jira-report.properties
===================================================================
--- src/main/resources/jira-report.properties	(revision 609484)
+++ 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

