3. November, 2010
A while ago, I tried Spring Roo — without much success. One of the main obstacles was the fact that most of the dependencies come from a special, internal repository and not from Maven Central. Which is odd. It’s OSS after all, so why do I need a special repository? Is it too much work for the Roo people to push their changes to Maven Central?
Whatever. A few days ago, Spring Roo 1.1 was released. I downloaded it and followed the tutorial.
Everything worked fine (good work, guys!) until I tried to run the tests. Again, I had to fight with Nexus to fix all the missing dependencies. Seems like the problem with the dependencies is still there. Bug #ROO-1111 just improved the situation by listing the necessary repositories so you don’t have to figure them out yourself. But if you’re behind a corporate Maven proxy, you’re still doomed.
Okay. All dependencies are there and … 9 generated tests work. What worries me are two things:
- Compiling a project with a single class and field takes two minutes.
- This simple project needs 976KB sources.
I know this is all generated code but in the end, I will still have to wade through all this to get to the place where I have to make my changes. I prefer frameworks which take the ten lines from the tutorial and put them into a script where I can run them again and again. Generated code is not an issue as long as I don’t see it. Take Grails: It will add everything that you omit in the background. It’s still too slow for my liking but at least the source isn’t bloated with stuff that I don’t care about just yet.
Conclusion: Not quite there, yet.
5. March, 2010
[Update November, 5th] I tried Roo 1.1. See this blog post.
[Update March, 17th] After posting this, the guys from Roo posted the comments below. The command line parser bug is fixed, the dependencies will be fixed in the next version and they are investigating a fix I sent them for the NoClassDefFoundError. Not everything is perfect but at least they work on it 🙂
I just tried the ten minute example of Spring Roo. It took a lot more than ten minutes to get a huge exception. Oh well. Some notes:
Roo expects a vanilla Maven installation. If you’re behind a proxy like Nexus which limits what Maven can download, you loose. The Roo guys have copied everything (like log4j) in their own Maven repository under a weird name (org.apache.log4j:com.springsource.org.apache.log4j:1.2.15). So after working with Roo, you have a tainted repository with a lot of duplicate entries. Well done.
Of course, not everything has been copied. So some stuff comes from central, some from springsource. This meant half an hour setup of our Nexus server, trying to avoid to break it for the rest of the team.
When I try to run the app, I get
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0':
Invocation of init method failed; nested exception is
I see. Well, your 10 minutes is up. Oh, and there is a bug:
controller all works while
controller all doesn’t. The difference? There is more than one space after the command. This breaks the parser (and the TAB completion). I’d file a bug if I knew how. A prominent link on the web site (that doesn’t lead to the general SpringSource Enterprise Support) would be nice.