Matt RaibleMatt Raible is a Java Champion and Developer Advocate at Okta.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

The Bus Project Begins

About 2 months ago, I sat down and started calling local body shops to see about starting my "Daddy's Bus" project. I called about 5 of them, left messages, and waited. A week later no one had returned my call. Then I got a call from Mike Lopez of Twins Auto Body and Paint. He told me to bring my bus in and he'd take a look at it. I drove to his shop in North Denver the next day.

The first 1/2 hour with Mike was somewhat mesmerizing - we talked about the bus, how I got it, what I wanted to do, etc. The whole time, he was running his hands all over it - almost caressing it in a sense. Mike and I had a great conversation and it ended with him saying it was in great shape and he'd love to work on it. I asked him how much - and he gave me a quote of $4800 - $5500. I thought this was just for the body work, and it sounded pretty reasonable. He then proceeded to tell me that this was for the whole ball of wax: body work and paint. I was expecting to spend 5K on body, 5K on paint, and 5 on interior, so this was music to my ears.

At this point, I got bold. "How much for show quality?", I asked. 8-9K was his answer. I was very excited at this point because he was telling me the prices I wanted to hear. The major difference b/w "show quality" and "regular" is that they do everything for show quality - including smoothing/painting the interior and bottom of the rig. Mike had me sold at this point, but I still didn't trust that he might be the guy to help me restore the bus. At that point, he invited me into his shop, where my gaze fell upon a plethora of beautiful VWs: a Carman Gia, 3 Bugs and an old Bus (same year as mine) with a truck bed. All were in various stages of restoration, but it was obvious that Mike knew what he was doing. We discussed getting my bus ready, and our conversation ended with me saying I'd call him when I had it stripped and ready for sandblasting.

It's been hard finding time and motivation to start working on the bus - but I managed to do it today. I started by ripping out the interior, and managed to get most of it done. I still need to drop the engine and remove all the windows - but I think I can do both of those in a couple of days. With any luck, I'll have the bus in Mike's shop by December. Estimated time to complete body work and paint: 6 months to a year. Once he's done with the body work and paint, I expect it'll take me another year to finish the interior, mechanical and electrical. With any luck, I'll have a brand new '66 bus before the New Bus is available.

Here's a bunch of before and after pictures from what I did today.


After Interior Removal

Posted in The Bus at Oct 15 2005, 06:34:28 PM MDT 5 Comments

Family Picture at Disney

It's been a while since I posted a family picture - here's one from last week at Disney.


Posted in General at Oct 15 2005, 06:05:32 PM MDT 2 Comments

Integrating Axis into AppFuse

Via Technorati, I found Integrate Axis and Appfuse Part1. Good stuff - I'm looking forward to Part 2.

Posted in Java at Oct 15 2005, 02:28:46 PM MDT 2 Comments

Maven 2's Transitive Dependencies

I spent a few hours this week integrating Maven 2's Ant tasks into Equinox. Here's a things I discovered in the process.

  • The JAR you need to include to use the Maven Tasks is quite large, weighing in at a hefty 833K. Regardless, it's easier to include a ~1MB JAR in CVS than it is 10MB of JARs. Equinox (w/o the extras directory) weighs in at 10.2MB before, 1.3MB after.
  • The transitive dependencies feature needs to be cleaned up a fair bit. There are a *lot* of unnecessary dependencies downloaded for many libraries. For example, Hibernate downloads a bunch of JBoss JARs and the Display Tag downloads all the various web framework JARs. I found myself excluding almost as many dependencies as I added.
  • Using in-line dependencies (where you specify each one in your build.xml) is cleaner and requires less XML (b/c of attributes vs. elements). I went this route at first and it worked well, but to allow greater flexibility (for those who might want to use Maven 2), I ended up creating a pom.xml. 48 lines in build.xml turned into 195 lines in pom.xml.
  • The Maven Developer team provides fantastic support - both on the mailing list and IRC. Thanks Brett!
  • Maven 2.0 RC was released today.
  • I need to figure out a way to "install" the persistence/web framework options in Equinox. The easiest way from a maintenance perspective is to parse pom.xml to add new dependencies. Entity includes might make the project more extensible though - and easier to upgrade.
  • Once you have pom.xml in place, it's pretty easy to make the build/test/package process M2 friendly.
  • Maven 2 is faster than Ant.

Overall, it was a pretty frustrating experience, with lots of trail-and-error. In the end, I got it all figured out and the only "hack" I had to do was delete servlet-api-2.4.jar after copying dependencies into my WAR. This is b/c Ant is not smart enough to know that dependencies with a "provided" scope shouldn't be copied. I could probably have a 4th dependencies path to solve this, but deleting sounded easier at the time.

I'm not going to check anything in yet b/c I still have to modify all the installers to specify their dependencies. The main advantage I can see in using a download-dependencies feature is easier upgrading of dependencies. It'll also make a lot more sense in AppFuse b/c certain parts of project (i.e. appfuse-dao.jar) can be published as re-usable modules.

In the meantime, if you'd like to try out Equinox with this feature (works with both Maven 2 or Ant), you can integrate it into a CVS version with the following steps:

That's it! I'm sure some things can be improved - please let me know if you find any issues.

Posted in Java at Oct 15 2005, 12:57:39 PM MDT 7 Comments