Today I'd like to list the tools, utils and libraries I use for OSGi Lab projects. These ingredients are indispensable pieces of the project.
- Foundation. I use Google code service for the project. It provides almost everything I need: version control - Subversion, embedded issue tracker, embedded wiki engine, downloads page. One thing that I missed is build server. I'll try to find one somewhere. Before that I'll use my own PC for nightly builds.
- Main ingredient. I'll base project structure on Apache Maven. This structure is very popular in open source projects and I like to follow it. Except common Maven plug-ins I'll use OSGi specific plug-in to generate bundle manifest - Maven Bundle Plug-in. This plug-in is based on very popular OSGi tool BND from Peter Kriens. It helps to create bundle jars, create and validate manifest files, resolve bundle class-path dependencies etc.
- Main tool. As the project structure is based on Maven we can use any editor for sources, even vi. I suggest to select one from high-end Java IDEs: Eclipse, JetBrains IDEA Community Edition or NetBeans. I personally like IDEA, but I don't like to start any "IDE holy wars". I think that all three IDE cover all project requirements, it's just a matter of habit.
- Testing tools. To provide upscale and reliable code it should be covered with tests. During OSGi bundle development we have 2 types of tests: OSGi specific (or integration tests) and non-OSGi specific (e.g. unit tests). For unit tests I'll use JUnit and for integration tests (inside OSGi framework) I'll use JUnit with Pax Exam - OSGi test framework.
- Spices. Additional useful tools and libraries: Mockito - mocking framework and Pax Runner - OSGi bundles provisioning tool
So, let's start to cook!