Unfortunately build server terminology is ambiguous and varies by product so here is what I'm using:
- Job - discrete top level object that has configuration for running a build
- Build - an execution of a job
- Phase - step within a job (e.g. build, test, release)
- Downstream Job - job triggered by completion of another
Job configuration in build servers usually allows you to share folders between phases of the build execution e.g. build & test. We don't really use downstream jobs, but I assume build servers should allow you to share downstream too but you should be careful the downstream job(s) don't deploy (just a guess - downstream jobs may need to be duplicated or have a variable to avoid deploying, see docs or lists for your build server).
Yes, the m2 repository should be wiped at the end of a build, the only time the local m2 repository should be shared is when the job/stage needs to explicitly consume the content that was produced in the previous step. (e.g. test phase needs to consume the artifacts in build phase). With a local repository manager proxying remotes there shouldn't be a significant impact on build times.