Apache UIMA PearPackagingAntTask software component
Copyright 2007-2009 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
