AppFuse Light converted to Maven modules, upgraded to Tapestry 5 and Stripes 1.5
This past week, I stayed up a couple of late nights to do some of the AppFuse Light work I wrote about in October. I converted all web frameworks to Maven modules, as well as made them inherit from the appfuse-web project. Below is what the new module structure looks like:
At this point, the project is ready to import into AppFuse's SVN project. Here's a list of other changes I made:
- Modules now depend on AppFuse's backend and allow you to use Hibernate, JPA or iBATIS as the persistence framework. Implementations for Spring JDBC, OJB and JDO have been removed.
- Upgraded to JWebUnit 2.1, which now uses HtmlUnit under the hood and has much better JavaScript support. It also has Selenium support, but I've yet to try it.
- Ajaxified Body integrated into all frameworks. You can easily turn it off by modifying the global.js file.
- Prototype and Scriptaculous loaded from Google's Ajax Libraries CDN.
- Upgraded to Tapestry 5. Mad props to Serge Eby and his tapestry5-appfuse project for showing me how to do this. Serge became a committer on AppFuse recently, so hopefully we'll continue to see great things from the Tapestry 5 support. I really like the clean URLs and minimum configuration required in Tapestry 5. It's testing framework is nice too, but I believe it could be improved.
- Upgraded to Stripes 1.5. This was easy and painless. I'm definitely a fan of Stripes and look forward to reading the Stripes book on my bookshelf.
- Dropped support for: Struts 1.x, WebWork, Spring MVC + Velocity.
If you want to try any of these applications, you can create archetypes using the following commands:
svn co https://appfuse-light.dev.java.net/svn/appfuse-light/trunk appfuse-light cd appfuse-light/preferred-web-framework mvn archetype:create-from-project cd target/generated-sources/archetype mvn install cd ~/dev mvn archetype:generate # The new archetype should show up as an option
Next steps include figuring out a way to flatten the inherited dependencies and plugins so archetype:create-from-project can create truly standalone projects. Please let me know if you have any questions.