hamcrest/JavaHamcrest — pull request #66 by josephw (2014-09-22 14:54:37+00:00)
Title: Use QDox 2 to generate sugar class from a single pass of parsing source

`hamcrest-generator` currently contains two separate reader classes, one which uses reflection and one which uses QDox, which work together to extract all information. This means that the sugar classes need to be generated after compilation, which complicates things when trying to make changes to the build.

This change upgrades to a recent milestone of QDox 2 which has good enough generics parsing to cover all the cases that previously required reflection. It throws away `ReflectiveFactoryReader` for an improved `QDoxFactoryReader` that covers all the previous cases.

All tests are carried across to the new implementation. Now there's a single Reader, they need to be marked as factory methods for all tests and parsed from files rather than taken from the classpath.

The primary motivation for this change is to allow for a Maven build (in a separate [build-with-maven](https://github.com/josephw/JavaHamcrest/tree/build-with-maven) branch), where `Matchers.java` and `CoreMatchers.java` can be generated in the `generate-sources` phase. However, it also simplifies things by shrinking the codebase and moving to a single-pass model.

In another step inspired by Ivy and Maven, it downloads the new version from Central rather than committing it as a blob. This saves growing the git repo by ~200K every time a new version is used.