Maven as a build tool has become the de-facto standard over the years. It's not surprising if we look little deeper into the promise Maven brings. Maven has two primary features and they are:
Convention over configuration: Build tools prior to Maven gave developers freedom about where to put source files, where to put test files, where to put compiled files, and so on. Maven takes away that freedom. With this freedom, all the confusion about locations also goes. In Maven, there is a specific directory structure for everything. The following table shows a few of the most common locations:
/src/main/scala
Source code in Scala
/src/main/java
Source code in Java
/src/main/resources
Resources to be used by source code such as configuration files
/src/test/scala
Test code in Scala
/src/test/java
Test code in Java
/src/test/resources
Resources to be used by test code such as configuration files
Declarative dependency management: In Maven...