Index: src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java	(revision 611694)
+++ src/main/java/org/apache/maven/plugin/jira/AbstractJiraDownloader.java	(working copy)
@@ -75,6 +75,8 @@
     private String component;
     /** Ids of types to show, as comma separated string. */
     private String typeIds;
+    /** Column names to sort by, as comma separated string. */
+    private String sortColumnNames;
     /** The username to log into JIRA. */
     private String jiraUser;
     /** The password to log into JIRA. */
@@ -203,10 +205,94 @@
             }
         }
 
-        // add default sorting (by priority and then creation date)
-        String sort = "&sorter/field=created&sorter/order=DESC" + "&sorter/field=priority&sorter/order=DESC";
+        // get the Sort order
+        int validSortColumnNames = 0;
+        if ( sortColumnNames != null )
+        {
+            String[] sortColumnNamesArray = sortColumnNames.split( "," );
+            // N.B. Add in reverse order (its the way JIRA likes it!!)
+            for ( int i = sortColumnNamesArray.length - 1; i >= 0; i-- )
+            {
+                String lowerColumnName = sortColumnNamesArray[i].trim().toLowerCase();
+                boolean descending = false;
+                String fieldName = null;
+                if ( lowerColumnName.endsWith( "desc" ) )
+                {
+                    descending = true;
+                    lowerColumnName = lowerColumnName.substring(0, lowerColumnName.length() - 4).trim();
+                }
 
-        return localFilter + sort;
+                if ( "key".equals( lowerColumnName ) )
+                {
+                    fieldName = "issuekey";
+                }
+                else if ("summary".equals( lowerColumnName ) )
+                {
+                    fieldName = lowerColumnName;
+                }
+                else if ("status".equals( lowerColumnName ) )
+                {
+                    fieldName = lowerColumnName;
+                }
+                else if ("resolution".equals( lowerColumnName ) )
+                {
+                    fieldName = lowerColumnName;
+                }
+                else if ("assignee".equals( lowerColumnName ) )
+                {
+                    fieldName = lowerColumnName;
+                }
+                else if ("reporter".equals( lowerColumnName ) )
+                {
+                    fieldName = lowerColumnName;
+                }
+                else if ("type".equals( lowerColumnName ) )
+                {
+                    fieldName = "issuetype";
+                }
+                else if ("priority".equals( lowerColumnName ) )
+                {
+                    fieldName = lowerColumnName;
+                }
+                else if ("version".equals( lowerColumnName ) )
+                {
+                    fieldName = "versions";
+                }
+                else if ("fix version".equals( lowerColumnName ) )
+                {
+                    fieldName = "fixVersions";
+                }
+                else if ("component".equals( lowerColumnName ) )
+                {
+                    fieldName = "components";
+                }
+                else if ("create date".equals( lowerColumnName ) )
+                {
+                    fieldName = "created";
+                }
+                else if ("last updated".equals( lowerColumnName ) )
+                {
+                    fieldName = "updated";
+                }
+                if ( fieldName != null )
+                {
+                    localFilter.append( "&sorter/field=" );
+                    localFilter.append( fieldName );
+                    localFilter.append( "&sorter/order=" );
+                    localFilter.append( descending ? "DESC" : "ASC" );
+                    validSortColumnNames++;
+                }
+
+            }
+        }
+        if ( validSortColumnNames == 0 )
+        {
+            // add default sorting (by priority and then creation date)
+            localFilter.append( "&sorter/field=created&sorter/order=DESC&sorter/field=priority&sorter/order=DESC" );
+        }
+
+
+        return localFilter.toString();
     }
 
     /**
@@ -667,6 +753,16 @@
     }
 
     /**
+     * Sets the sort column names.
+     *
+     * @param thisSortColumnNames The column names to sort by
+     */
+    public void setSortColumnNames( String thisSortColumnNames )
+    {
+        sortColumnNames = thisSortColumnNames;
+    }
+
+    /**
      * Sets the password for authentication against the webserver.
      *
      * @param thisWebPassword  The password of the webserver
Index: src/main/java/org/apache/maven/plugin/jira/JiraMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/jira/JiraMojo.java	(revision 611694)
+++ src/main/java/org/apache/maven/plugin/jira/JiraMojo.java	(working copy)
@@ -178,6 +178,27 @@
     private String columnNames;
 
     /**
+     * Sets the column names that you want to sort the report by. Add
+     * <code>DESC</code> following the column name
+     * to specify <i>descending</i> sequence. For
+     * example <code>Fix Version DESC, Type</code> sorts first by
+     * the Fix Version in descending sequence and then by Type in
+     * ascending sequence.
+     * <p>
+     * Valid columns are: <code>Key</code>, <code>Summary</code>,
+     * <code>Status</code>, <code>Resolution</code>, <code>Assignee</code>,
+     * <code>Reporter</code>, <code>Type</code>, <code>Priority</code>,
+     * <code>Version</code>, <code>Fix Version</code>,
+     * <code>Component</code>, <code>Create Date</code> and
+     * <code>Last Update</code>.
+     * </p>
+     *
+     * @parameter default-value="Priority DESC, Create Date DESC"
+     * @since 2.0-beta-4
+     */
+    private String sortColumnNames;
+
+    /**
      * Defines the JIRA username for authentication into a private JIRA installation.
      *
      * @parameter default-value=""
@@ -306,6 +327,8 @@
 
         jira.setPriorityIds( priorityIds );
 
+        jira.setSortColumnNames( sortColumnNames );
+
         jira.setFilter( filter );
 
         jira.setJiraUser( jiraUser );
