We've recently used Maven with a large project here at my company. The application design features several independent ADF library deployments which are all used by a main view application. We are currently on 11g (11.1.2.3.0).
The biggest challenge was being forced to use ojdeploy for our ADF library deployments. I attempted to set up the build for these ADF libraries using the Maven assembly plugin, mimicking the structure of the ADF library jars generated by ojdeploy. However, there are proprietary files generated by ojdeploy at build time that do not exist in the project (such as the task flow registry). This means that if you want to do a true Maven-only build in this scenario, you have to manually run a deployment with JDeveloper to get those proprietary files, then check them into your code base and have the Maven assembly plugin place them in the appropriate locations in your final ADF library jar. The main drawback to this was that the content of these files changes based on your project, making this an unacceptable solution.
The alternative is to use ojdeploy (in 11g), which is kicked off by an ant task in your Maven pom. This solves the problem of handing the proprietary files generated at build time, but it introduces other issues. When you create a build.xml using JDeveloper and set it to use ojdeploy, a build.properties is generated, containing hard-coded, absolute path references to things such as your JDeveloper home folder and the project home folder. Ojdeploy needs these properties to perform the build. We had to make these properties contain property placeholders, and pass the properties from the command line at build time. Also, our build is currently compiling all projects twice, because Maven does its own class compilation, and ojdeploy does its own compilation as well.
Another issue that we are facing, which we have not yet solved, is running these builds on our Hudson CI server. About 50% of the time, the build will lock up during the ojdeploy run of any particular module, and will stay hung until you cancel the build. I've attempted to do some stack dumps of the JVM that's running ojdeploy, but the JVM becomes completely unresponsive, and I can only use jstack -F, which doesn't give good enough dumps to use in a tool like Samurai.
All in all, I will say that I look forward to seeing the improvements in 12c once we begin using it, because there are many pitfalls in 11g regarding builds using Maven.
John