Take advantage of automating the generation of the release notes. Copied from Commons POOL.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/fileupload/trunk@1565338 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 84ad31f..2c34603 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,44 +1,33 @@
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
+              Apache Commons FileUpload 1.3.1 RELEASE NOTES
 
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-The Apache Commons FileUpload team is pleased to announce the Apache Commons
-FileUpload 1.3.1 release!
+The Apache Commons FileUpload team is pleased to announce the release of Apache Commons FileUpload 1.3.1.
 
 The Apache Commons FileUpload component provides a simple yet flexible means of
 adding support for multipart file upload functionality to servlets and web
-applications.
+applications. Version 1.3 onwards requires Java 5 or later.
 
 No client code changes are required to migrate from version 1.3.0 to 1.3.1.
 
 
+This is a security and maintenance release that includes an important security
+fix as well as a small number of bugfixes.
+
 Changes in version 1.3.1 include:
 
+
 Fixed Bugs:
-o SECURITY - CVE-2014-0050. Specially crafted input can trigger a DoS if the
-        buffer used by the MultipartStream is not big enough. When constructing
-        MultipartStream enforce the requirements for buffer size by throwing an
-        IllegalArgumentException if the requested buffer size is too small. This
-        prevents the DoS. 
-o When deserializing DiskFileItems ensure that the repository location, if
-        any, is a valid one. Thanks to Arun Babu Neelicattu. 
-o Correct example in usage documentation so it compiles. 
+o                  SECURITY - CVE-2014-0050. Specially crafted input can trigger a DoS if the
+                   buffer used by the MultipartStream is not big enough. When constructing
+                   MultipartStream enforce the requirements for buffer size by throwing an
+                   IllegalArgumentException if the requested buffer size is too small. This
+                   prevents the DoS.
+o                  When deserializing DiskFileItems ensure that the repository location, if
+                   any, is a valid one. Thanks to Arun Babu Neelicattu.
+o                  Correct example in usage documentation so it compiles.
 
 
 
-Have fun!
--Apache Commons FileUpload team
+For complete information on Apache Commons FileUpload, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Apache Commons FileUpload website:
 
+http://commons.apache.org/proper/commons-fileupload/
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 83cf12d..36c3c6c 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -43,7 +43,9 @@
   </properties>
 
   <body>
-    <release version="1.3.1" description="maintenance release" date="TBD">
+    <release version="1.3.1" description=
+"This is a security and maintenance release that includes an important security 
+fix as well as a small number of bugfixes." date="TBD">
       <action dev="markt" type="fix">
         SECURITY - CVE-2014-0050. Specially crafted input can trigger a DoS if the
         buffer used by the MultipartStream is not big enough. When constructing
diff --git a/src/changes/release-notes.vm b/src/changes/release-notes.vm
new file mode 100644
index 0000000..ddcbff7
--- /dev/null
+++ b/src/changes/release-notes.vm
@@ -0,0 +1,113 @@
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements.  See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership.  The ASF licenses this file
+## to you under the Apache License, Version 2.0 (the
+## "License"); you may not use this file except in compliance
+## with the License.  You may obtain a copy of the License at
+##
+##  http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing,
+## software distributed under the License is distributed on an
+## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+## KIND, either express or implied.  See the License for the
+## specific language governing permissions and limitations
+## under the License.
+              ${project.name} ${version} RELEASE NOTES
+
+The ${developmentTeam} is pleased to announce the release of ${project.name} ${version}.
+
+The Apache Commons FileUpload component provides a simple yet flexible means of
+adding support for multipart file upload functionality to servlets and web
+applications. Version 1.3 onwards requires Java 5 or later.
+
+No client code changes are required to migrate from version 1.3.0 to 1.3.1.
+
+
+## N.B. the available variables are described here:
+## http://maven.apache.org/plugins/maven-changes-plugin/examples/using-a-custom-announcement-template.html
+##
+## Hack to get line breaks to work in release description. For this to work, each line break in the
+## release description attribute in changes.xml needs to be preceded by a single space.
+#set( $desc = $release.description )
+#set( $desc2 = $desc.replace($esc.newline, "  ") )
+#set( $d = $desc2.replace("  ",$esc.newline) )
+${d}
+
+## set up indent sizes. Only change indent1
+#set($props=${project.properties})
+#set($jiralen=$props.get("commons.jira.id").length())
+## indent1 =   POOL-nnnn:
+#set($blanklen=$jiralen+6)## +6 for "-nnnn:"
+## must be at least as long as the longest JIRA id
+#set($blanks="                                  ")
+#set($indent1=$blanks.substring(0,$blanklen))
+## indent2 allows for issue wrapper
+#set($indent2="$indent1   ")
+##
+#macro ( processaction )
+## Use replaceAll to fix up LF-only line ends on Windows.
+#set($action=$actionItem.getAction().replaceAll("\n","
+"))
+## Fix up indentation for multi-line action descriptions
+#set($action=$action.replaceAll("(?m)^  +",$indent2))
+#if ($actionItem.getIssue())
+#set($issue="$actionItem.getIssue():")
+## Pad shorter issue numbers
+#if ($issue.length() < $indent1.length())#set ($issue="$issue ")#end
+#if ($issue.length() < $indent1.length())#set ($issue="$issue ")#end
+#if ($issue.length() < $indent1.length())#set ($issue="$issue ")#end
+#else
+#set($issue=$indent1)
+#end
+#if ($actionItem.getDueTo())
+#set($dueto=" Thanks to $actionItem.getDueTo().")
+#else
+#set($dueto="")
+#end
+o $issue ${action}$dueto
+#set($action="")
+#set($issue="")
+#set($dueto="")
+#end
+##
+#if ($release.getActions().size() == 0)
+No changes defined in this version.
+#else
+Changes in version ${version} include:
+
+#if ($release.getActions('add').size() !=0)
+New features:
+#foreach($actionItem in $release.getActions('add'))
+#processaction()
+#end 
+#end
+
+#if ($release.getActions('fix').size() !=0)
+Fixed Bugs:
+#foreach($actionItem in $release.getActions('fix'))
+#processaction()
+#end
+#end
+
+#if ($release.getActions('update').size() !=0)
+Changes:
+#foreach($actionItem in $release.getActions('update'))
+#processaction()
+#end
+#end
+
+#if ($release.getActions('remove').size() !=0)
+Removed:
+#foreach($actionItem in $release.getActions('remove'))
+#processaction()
+#end
+#end
+## End of main loop
+#end
+
+For complete information on ${project.name}, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache ${project.name} website:
+
+${project.url}