title: What is build-by-convention in Gradle deep explanation?
body: <p>The <a href="http://www.gradle.org/docs/current/userguide/userguide.html" rel="nofollow noreferrer">Gradle User Guide</a> often mentions that Gradle is <strong>declarative</strong> and uses <strong>build-by-convention</strong>. What does this mean?</p>
  
  <p>From what I understand it means that, for example, in <strong>java</strong> plugin there are conventions like
  source must be in <code>src/main/java</code>,tests must be in <code>src/main/test</code>, resources in <code>src/main/resources</code>, ready jars in  <code>build/libs</code> and so on. However, Gradle does not oblige you to use these conventions and you can change them if you want.</p>
  
  <p>But with the first concept, I have a bigger problem with understanding. Like SQL you say what you want to do with your queries but do not say how the Database System will get them, which algorithm to use to extract the data etc.</p>
  
  <p>Please, tell me more to understand these concepts properly. Thanks.</p>