- Maven [ This is a build tool and has nothing to do with a framework. This is more of a way in helping you manage your CLASSPATH and do some extra other stuff as well ]
- TestNG [ This is a TestRunner that is responsible for executing your automation tests. You can choose to piggy back on its capabilities (such as listeners ability to do things automagically behind the scenes, generating reports etc.,) or you can keep your framework completely neutral to anything.
- Page Object Model - This is somewhat relevant to a UI automation framework because this is a concept of how you visualise your actual html pages so that your tests can interact with them in a Object oriented kind of fashion. The idea is to look at your actual html page as an object which contains within itself one or more html elements [ radio buttons, buttons, text boxes etc., ]
before you start thinking of building some frameworks.
There is no question here of any of these things having limitations over one another because all of them are totally disconnected and independent of each other.
Lastly before you think of re-inventing the wheel, I would suggest that you please spend some time exploring some of the well established open source automation frameworks that are already built and made available for usage. You would save a lot of time if you just adopted one of them.
Some of them :
There are still a lot more you can find, if you spend sometime searching for them [ Many of them are open-sourced and you can start using them right away ]