/skb-java

A POM and a set of shell scripts, ant tasks/macros, settings, to maintain the Java port of the SKB.

Primary LanguageShellApache License 2.0Apache-2.0

SKB Java

Note
Links are given as github and local. github links refer to links to respective Github repositories. local links refer to an local HTML file. This needs all repositories to be cloned locally.

Projects

The SKB is a collection of projects, all with their own Github repository. Each project can be build separatly. This repository contains a POM, shell scripts, ant tasks and macros, and settings to maintain all projects. While most projects are named skb-java-, there are a few execeptions, namely the execution service (execs), the ASCII table (asciitable) and the SVG 2 Vector converter (svg2vector).

Most projects will have inter-dependencies, but there are no circular dependencies (try Structure101 and see for yourself, it is free for OSS project).

Currently, there are the following stand-alone projects:

  • svg2vector: A tool to convert SVG/SVGZ to EMF, PDF and SVG, with layer management (github, local)

  • asciitable: An ASCII table using 7-bit and UTF-8 border characters (github, local)

  • execs: A simple set of classes to execute programmes from the command line (github, local)

Currently, there are the followin SKB-Java projects:

  • skb-base: Base definitions and classes, including utilities and a 5WH message object (github, local)

  • skb-categories Interfaces that build hiearchies of categories, e.g. for keys, values, lists, options, DSLs (github, local)

  • skb-commons Common classes for tables and trees, plus utility classes such as ReportManager, CLI parser (github, local)

  • skb-composite Base classes for implementing the composite pattern, including Special Objects (github, local)

  • skb-configuration Set of standard configurations for other SKB applications (github, local)

  • skb-examples (Growing) set of examples on how to use the other SKB projects (github, local)

Use

The SKB projects are published at the Central Repository. Simply use the dependency information for your preferred dependency manager. They are all published under de.vandermeer. For a list see the Central Repository (type 'vandermeer' in te search form).

Old, obsolete projects:

  • svg2emf - now in svg2vector

  • skb-asciitable - now asciitable

  • skb-execs - now execs

  • skb-collections - now in skb-base

Clone

Create a directory for the skb, clone the main SKB project (this one) and then use provided commands to clone the rest.

# mkdir skb-java
# git clone https://github.com/vdmeer/skb-java.git skb
# cd skb
# ./clone-modules

Development

For Eclipse simply import the maven projects. Individual projects have independent POM files. The SKB POM is not used as a parent.

To use Eclipse, do the following:

  • Get a Java SE Eclipse distribution from http://www.eclipse.org/downloads/, latest version tested is Juno SR 1

  • Install plugins

    • Follow the plug-in instructions at SKB HowTo-Eclipse and install

      • Findbugs - for bug analysis

      • Logback - as a frontend for log4j log messages

      • ANTLR4IDE - to compile ANTLR 4 grammars

      • Structure 101 - to realise structural analysis of the SKB java code

Build

Simply use Maven 3 on the command line to build the repositories.

Module Script

The SKB provides a script tool called modules in src/main/bash. This script can be used to maintain POM files, set file versions, etc.

To use the script change the settings in env.settings to your liking. Use source-bash or source-tcsh to load environments, then call src/main/bash/bin/module. The source scripts will set the modules automatically.

The module script can be used in other projects, simply copy the bash/bin and bash/etc folders. The script uses relative paths, so no change in the script is needed when copied. The only assumption is that there is a bin and etc directory in the same root.