WebGUI Development
Project Management
VCS Repositories
Please refer to the wiki page VCSRepositories.
Trac
The Kieker Trac provides a Wiki, a ticket system etc.
In order to request an account, please contact André.
Bug Tracker
We use the ticket system provided by the Kieker Trac for managing bugs and other issues.
Coding Style
We use the Eclipse Coding Conventions with some minor modifications. First, we allow 160 characters per line. And second, parameters of methods are declared final as long as they are not modified inside the method.
To setup these coding styles in Eclipse is explained in Kieker Coding Conventions Setup.
Build and Development Environment
Java
Kieker's WebGUI is built using JDK 1.6.
Maven Build
Maven is used as the build tool for Kieker's WebGUI. The important maven goals included in the pom.xml file are:
- package: This is the goal that compiles the artifacts of Kieker's WebGUI, creates the corresponding war file in the target/ directory and creates the WebGUI's releases files.
- test: This goal executes the JUnit tests, as well as Checkstyle, Findbugs and PMD. Reports are created for all four.
IDE-Specific Project Configuration
This section describes how to create a project for developing with the Kieker's WebGUI sources in Eclipse and/or NetBeans. Make sure that the IDE is already configured to support Maven applications.
Eclipse
Kieker's WebGUI includes Eclipse project files (.project, .classpath etc.) allowing the project to be imported easily:
- Open the import wizard by selecting File -> Import.
- Choose General -> Existing Projects into Workspace.
- Select the WebGUI's working directory from your filesystem.
- Simply click Finish to import the project.
- Kieker's WebGUI should now appear in the list of projects.
NetBeans
Kieker's WebGUI can be opened with NetBeans as well:
- Open the wizard by selecting File -> Open Project.
- Select the WebGUI's working directory from your filesystem.
- Simply click Open Project to open the project.
- Kieker's WebGUI should now appear in the list of projects.
Continuous Integration
Our Jenkins server includes the following two jobs:
- kieker-webgui
Nightly build including the execution of the JUnit tests - kieker-webgui-nightly-release
Nightly release triggered by a successful execution of the kieker-webgui job.
Creating a Release of the WebGUI
Checklist for creating a release version
- Release branch:
- Create a branch for the release:
git checkout -b 1.6
- Set the final release version number in the pom.xml file
- Set Kieker's final version number in the pom.xml file
- Rename the license file for Kieker
- Remove the Sonatype repository from the pom.xml file
- Modify the HISTORY file
- Commit the changes
- Push the branch
git push -u origin 1.6
- Create a branch for the release:
- Jenkins Release Jobs
- Configure the Kieker Jenkins jobs kieker-webgui-RC and kieker-webgui-RC-release to use the release branch
- Trigger a build of the Jenkins job kieker-webgui-RC. After a successful build, the release archives can be downloaded from job/kieker-webgui-RC-release/lastSuccessfulBuild/artifact/
- Publish release files
- Jenkins cleanup:
- Disable the jobs kieker-webgui-RC and kieker-webgui-RC-release
- Git cleanup:
- Merge the branche's changes (if such) back to master
$ git checkout master $ git merge 1.7
- Create a tag <version-number> (e.g., with gitk) and push it git push --tags
- Remove remote branch for this version git push origin :refs/heads/1.7
- Caution (hint by jwa): Be careful, not to readd deleted tags, that only exist locally on your branch but no longer on the server (I removed them again). There is a command to remove all local tags not present on the server.
- Update version number in pom.xml
- Update Kieker's version number in pom.xml
- Rename the license file for Kieker
- Add the Sonatype repository ( https://oss.sonatype.org/content/repositories/snapshots/) to the pom.xml
- Commmit changes
- Merge the branche's changes (if such) back to master
Documentation
Javadoc API
- Use the @since tag for new classes, interfaces, enums and annotations. Use the tag also for all methods within interfaces.
- Use the @author tag if you create a new class, enum, interface or annotation.
- Setter and getter methods don't have to be commented.
- If you create a new class, interface, enum or annotation: Add a meaningful comments which describes what the component does and why it exists.
- Do not mix javadoc and TODO comments. TODO comments should always be located outside of javadoc blocks.
Comments
- Use // for "normal" (non-javadoc) comments
- If you use //NOCS or //NOPMD add the reason in brackets behind the comment.
Further Recommendations and Hints
- Use Eclipse to work with the Java part of the project and NetBeans for the web part.