Trying on Pants
With many Java projects in a single repo, we are trying out the Pants build system.
Written by Eric Ayers.
For the last few months, we’ve been working to migrate some of our build processes to the up-and-coming Pants build tool. We are working to replace some of our uses of Apache Maven.
The Case for Changing Build Systems
Pants is compelling to us for a few reasons. First of all, the overall design was inspired by Google’s internal build system, which we know scales well to large repos containing many projects. Beyond that, its feature set meshes with our needs, including:
- First class support for incremental builds in a large repo from HEAD of the repository.
- Its ability to integrate with a Maven nexus (which we use heavily for artifacts created inside and outside the company).
- Use of a local cache for distributed cache for build artifacts, which we need for performance reasons in our continuous integration infrastructure.
- The ability to develop and distribute 3rd party plugins.
But the overwhelming selling point is that Pants has a very open development community and has multiple companies actively contributing.
Getting the Right Fit
Pants is still a somewhat nascent project and didn’t work out of the box for all the the features we are using in our repo. Currently, Pants is configured to run side-by-side with Maven in our repo. In the future, we plan to:
- Support multiple source/target versions of Java in the same repo.
- Integrate Pants more tightly with our open source continuous integration system, Kochiku.
- Add support for the Wire protocol buffers.
Right now we’re still experimenting with Pants, starting to use it with some projects internally, and we are actively contributing back. We are hoping that other organizations with similar needs will also take a look at Pants. Learn more at http://pantsbuild.github.io/.