Παρασκευή 7 Ιουνίου 2013

Mavenized!

The build process is now based on Maven (actually there was no build process available publicly previously, but, if you must know, it was based on Ant and shell scripts). After picking up the basics from the sonatype books (Maven Reference and Maven by Example - pretty good documentation btw) I went for it. The more interesting stuff are in the <build/> section of the parent pom, as it is there where all the Bo2 quirks were tackled. These had to do mostly with the unconventional source and resource directory structures, which I did not want to break.

Actually building Bo2 was about 5% of the work. It was running successfully all the tests that took some time. First I had to figure out how to include every test source and resource needed for each module, including dependencies to test sources and resources of other modules. This last one turns out to be possible by specifying dependencies with test scope on test-jars of other modules. With that and using the build-helper-maven-plugin the tests were mostly OK. The last details had to do with 'leaky' tests. 

By 'leaky' I mean integration tests that had runtime dependencies that went further than their module and its dependencies. Imagine, for instance, a TransactionManager integration test. Now, a TransactionManager implementation within Bo2 need know nothing about Hibernate. And it doesn't. And of course the relevant tests have no compile time dependency what so ever with Hibernate. However, on runtime the test WAS using Hibernate! This is actually a very nice side-effect of building a multi-module project with Maven: you do not get away with such shortcuts :).

In general, I have to say this was fun for the most part, although not without any frustration. Maven is quite mature, but there are a lot of caveats one has to be aware of, especially if one has practically no previous experience with it other than merely using it when checking out projects that are built with it and everything is pre-configured (having to use "mvn install -N" when making changes to parent pom anyone?)

Next up, should be integration with Wicket 1.5. This has actually already been done, but it won't be merged in the trunk until internal projects depending on Bo2 are ready to make the switch to Wicket 1.5 as well. Stay tuned.

PS: Kenney from stackoverflow gets an honorary mention for answering this question.

Δευτέρα 3 Ιουνίου 2013

We have a logo!


Even though Bo2 exists for so long (inside Interamerican) we never had a logo. And we never thought of creating one. But when we uploaded on google code, we noticed that there is a place for the project logo. That was the first time we ever thought about it.

And voila!


The logo

Ok, we know, there is a resemblance with the olympic rings. However the inspiration didn't come from the olympics, but rather from the interamerican logo. Its chainrings gave us the idea that b, o and 2 can be connected as chainrings.

... and the inspiration