# links property file for Ant's symlink task in pom.xml:
# links to components in http://hc.apache.org/components/

5.1         ../components/httpcomponents-client-5.1.x/5.1
5.1.1       ../components/httpcomponents-client-5.1.x/5.1.1
5.1.2       ../components/httpcomponents-client-5.1.x/5.1.2
5.1.3       ../components/httpcomponents-client-5.1.x/5.1.3
current     ../components/httpcomponents-client-5.1.x/5.1.3
