Per the docs and what I've read online sourceSets are a logical grouping of files that should be packaged together. When you specify a sourceSet you can also specify a class path and other associated attributes. But could someone explain what is the purpose of a sourceSet? What basic problem does it solve?