Maven is a project manager, not a build manager like Ant, hence the pom.xml file (Project object model). It tries to use a certain format to where the files are on the system to make it simpler to include dependencies.
$ mvn archetype:generate
This generates a simple template. archetype is the plugin, generate is the goal.
$ mvn help:effective-pom
This generates the entire POM that includes the minimal pom.xml including any parent POMs, user settings, and active profiles.
Maven doesn’t know how to compile your code or make a JAR file, but the plugins it uses do. Basic maven is a basic shell that knows how to:
parse the command-line manage a classpath parse a POM file download Maven plugins Maven Lifecycle Plugin goals can be attached to lifecycle phases (e.g. install, test). Each phase may have 0 or more goals attached to it. Example phases:
- process-resources
 - compile
 - process-classes
 - process-test-resources
 - test-compile
 - test
 - prepare-package
 - package
 
When mvn fires is launches all phases before it in the lifecycle.
You can also just specify the plugin goals, but that is a lot more tedious
$ mvn resources:resources compiler:compile resources:testResources surefire:test jar:jar install:install
4 (really 5) definitions create the coordinate system for a product:
- groupId - reverse domain name
 - artifactId - unique identifier under the group representing a single project
 - packaging - package type (jar, war, ear)
 - version - a specific release of a project
 - classifier (rarely used)
 
Maven download artifacts and plugins from a remote repository to a your local machine and stores them in your local Maven repository (~/.m2/repository). install phase installs a .jar into the local repository. A repository contains the .jar and the .pom of what it depends on.
You can generate a site and documentation by doing the following:
$ mvn site
Generates javadoc, and other custom reports
This can tell you what all of the dependencies are:
$ mvn dependency:resolve
A prettier way to see the dependency tree
$ mvn dependency:tree
I got a lot of useful information for this post from Maven By Example