I have problem with understanding how jenkins slaves are working. I have a master jenkins and a node defined as slave. I have a Maven project that I want to run on slave but having the report available on Jenkins Master.
Should I have Maven installed on Master or on Slave or both? Do I keep the Maven project on Slave or Master or both? I think it should be both but I can not understand why?
When using slaves, you just have to ensure that each slave has external tools installed (Maven in your case), and properly configured (available in path, custom settings.xml if any, etc.)
To avoid having to bind a job to a unique slave, an obvious best practice is to have all your slave configured alike (i.e. all linux slaves with all needed tools, same for windows slaves, etc.)
Once all your tools are available on each slave, Jenkins takes care of running the project on an available node (master or a slave). Monitoring, log tail, build history and so on... is transparently available to the user, whatever the node used.
You don't even need to care about plugins, they are automatically available to the slaves once installed on the master.