Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Each plug-in and feature has a corresponding (usually rather small) POM file. The POM files in the features and plugins directories know about the different features and plug-ins. The parent POM file, which all other POM files copy basic configuration from, knows about the feature and plug-in POM files, as well as about every kind of build configuration we have (for building the pragmatics repository, for building the KWebS product, etc.). In addition, the build directory also contains a bunch of subdirectories. These also contain POM files specialized for building the P2 repositories necessary to publish our Eclipse featuresthat actually implement the different build configurations to produce p2 repositories and products we can deliver.

Using the KIELER Maven Build

...

KIELER needs to be built against a P2 repository generated from an Eclipse reference installation (the target platform). The command for doing that is described on this page. You may need to adapt the reference repository location in the parent POM filesThe target platform is available online so you don't have to worry about it when building KIELER on your local computer.

Invoking Maven

To actually build KIELER once all preliminaries are done, navigate to the /build/de.cau.cs.kieler.parent directory and run the following command line:

Code Block
languagenone
. /home/java/java-env            # Only necessary when working on our servers
mvn clean package -P <profile>   # For a list of available profiles, see parent pom.xml

Once Maven has finished, the different build artifacts may be found in the /build/de.cau.cs.kieler.*<profile>.repository/target directories. The following build profiles are available in the KIELER Pragmatics repository:

  • klighdning – Builds a standalone version of the KLighDning server.
  • kwebs – Builds a standalone version of the KWebS server.
  • papyrus – Builds a p2 repository that contains our feature for adding automatic layout to a Papyrus installation.
  • pragmatics – Builds a p2 repository that contains our pragmatics features.
  • ptolemy-rcp – Produces a standalone version of our Ptolemy Model Viewer.

What to Be Aware of

There are some things that people need to be aware of to keep the build files in a valid state.

...

We distribute our KLay layout algorithms in two library files: one that contains just our algorithms, and another one that also contains dependencies such as required EMF classes. To build the KLay libraries, navigate to the /build/de.cau.cs.kieler.klay.libraries directory and do the following:

  1. Set the PRODUCT TARGET_PLATFORM environment variable to point to a complete installation of KIELER. You can get one by using the automatic Maven local copy of our currently used target platform p2 repository.
  2. Set the KIELER_REPOSITORY environment variable to point to a local copy of a p2 repository of our pragmatics build.
  3. Run Ant on the build.xml file. This will produce both versions of the KLay layout library.

...

  1. Continuous Plugins – Compiles the plug-ins and runs the unit tests on them. None of the compiled artifacts are published anywhere. This plan is triggered by pushing stuff into the repositories, giving early feedback regarding whether committed changes break anything.
  2. Nightly Product – Compiles the plug-ins and assembles <Product> – Assembles distributable product files and/or update sites. Distributable files are published in the nightly build directory /home/kieler/public_html/files/nightly. Update sites are published in /home/kieler/public_html/updatesite/nightly. This plan is These plans are run once every night.
  3. Nightly Rating – Compiles the plug-ins and runs our code quality rating doclet on them. The result is a website published at /home/kieler/public_html/rating. This plan is run once every night.
  4. Release Builds – Continuous builds of release branches once a release is imminent. These usually run whenever changes are pushed into the repository.

...

ArtifactRepositoryBuild FileBamboo Build PlanFinal Directory
KLay Layout LibrariesPragmatics...klay.libraries/build.xmlKIELER Pragmatics -> Nightly ProductKLay/home/kieler/public_html/files/nightly/klay
KLighDning RCAPragmatics...klighdning.repository/pom.xmlKIELER Pragmatics -> Nightly KLighDning/home/kieler/public_html/files/nightly/klighning
KWebS RCAPragmatics...kwebs.repository/pom.xmlKIELER Pragmatics -> Nightly Product/home/kieler/public_html/files/nightly/kwebs
KIELER Pragmatics Update SitePragmatics...pragmatics.repository/pom.xmlKIELER Pragmatics -> Nightly Product/home/kieler/public_html/updatesite/nightly/pragmatics/
Papyrus Layout Update SitePragmatics...papyrus.repository/pom.xmlKIELER Pragmatics -> Nightly Product/home/kieler/public_html/updatesite/nightly-papyrus/
KIELER RCASemantics...semantics.repository/pom.xmlKIELER Semantics -> Nightly Product/home/kieler/public_html/files/nightly/
KIELER Semantics Update SiteSemantics...semantics.repository/pom.xmlKIELER Semantics -> Nightly Product/home/kieler/public_html/updatesite/nightly/semantics/
Ptolemy Libraries Update SitePtolemy...ptolemy.repository/pom.xmlKIELER Semantics -> Ptolemy Update Site/home/kieler/public_html/updatesite/ptolemy/