Continuous Integration on SAP using Subversion, Maven, Hudson, Nexus and Sonar

Posted by René Odendaal on Jun 24, 2009


When our team first began Java development on the SAP NetWeaver platform, we decided that we should start out using the tools that SAP provide for this purpose. The logic behind this decision was that SAP was best positioned to provide suitable development tools for their own platform. Even though this is fairly sound logic, we’ve been quite disappointed with the tools provided by SAP.NetWeaver Developer Studio (NWDS) falls short of the expectations of most developers, despite being built upon the ubiquitous Eclipse IDE, and NetWeaver Developer Infrastructure (NWDI) over-complicates the task of managing source code and builds. Both are poorly documented, and there’s little assistance on the web for either. I’m hoping that this series of posts will help other teams that want to move away from the development tools provided by SAP to the more established products that are more widely accepted. I will write a proper evaluation of these tools at a later stage, as I feel it needs a post of its own. For now, I want to focus on what we’ve done to simplify and automate our development environment.

There is a massive amount of information I can share from our experiences, so I’m going to spread this over a number of posts to make sure I do it justice. Each post will dive a little deeper into a particular part of our environment, showing what we discovered in the process of getting to where we are now. The basic steps are outlined below to give you an idea of what’s to come…but expect more detail later.

Firstly, I’ve configured a multi-module Maven project to bring some order to our Flex & Java projects. This has greatly simplified the structure of our projects and has brought consistency across all codebases, which is very useful when team members move between projects or new members join the team.

Having configured Maven for project management, the next step was to configure Nexus as our local artifact repository. Given that we work in the SAP environment, I needed to upload the relevant JAR’s from the SAP DC model into our local Nexus 3rd Party repository, and then configure our Mavenproject dependencies accordingly. Once those steps were complete, the upgrade of our developer workstations could be done – and everyone had the joy of uninstalling NWDS in favour of a plain Eclipse installation (with some cool plugins of course).

Having looked at a few different continuous integration systems, I found that Hudson seemed to be a good option to try out. So I installed Hudson and configured our projects for automatic builds based on Subversion check-ins.

Then I wanted to automate deployment to NetWeaver. To do this, I wrote a SAP NetWeaver Deployment Plugin for Maven. This is still in a very early stage of development, but has enough features implemented for what we need right now. This will undoubtedly be extended in time, and will definitely become one of my pet projects.

So now we have a single code repository for all our Flex and Java code – Subversion. We also have a consistent project structure using Maven, and a central artifact repository using NexusHudson builds our code automatically and then deploys the packaged product to our local Nexus repository and SAP development systems, all ready to be tested.

So that’s all great for continuous integration… but what about quality? We’re in the process of getting automated tests up & running, but in the meantime I’ve configured Sonar to do some code analysis. This is a particularly impressive product, and definitely something I’ll be researching into more over the coming weeks & months.

These are all incredible tools, and each deserves their own post… so that’s what I intend on doing. Watch this space for future posts on how I’ve set it up, and what benefits we’re gaining from the new environment.

Are you developing in Java on the SAP platform? I’d be interested to know what tools you’re using too.


Related Posts