Question: I want to create multiple projects with the same files but the files are going to be in different locations. I don't have idea how to be able to share same code with multiple projects that basically hasn't the same folder structure (something like I want to do git on subfolder and not on the root folder) so I don't need to take changes manually each time and to paste it in each project I have

**Example:** 

> 
> project1: dirA/dirD/src
> 
> 
> project2: dirX/dirY/dirZ/dirB/dirH/src
> 
> 
> src -> the shared sub folder
> 
> 
> 

Any suggestion for me?

Answer: 
I think the most important point is consistency, which comes in a couple of flavours.

* PrimeFaces (PF) components have a lot of styling put on them (through the theme options). If you use PF components throughout your application, you'll get a consistent style. If you mix PF and JSF components this will look messy.
* PF components have a particular way of doing things - organising options, defining ajax calls etc. While it's important to know how the JSF stuff works underneath, using PF components consistently will make your code consistent too.

Finally, in many cases PF components are exact replacements for JSF components, but often with extra features added. There's no reason not to take advantage of them.
Better choose one of them and develop all application using mainly one stack. Will be easy to support, easy update, easy bug fix.
Primefaces at the moment good choose.