How does gradle work?