////
******************************************************************************
* Copyright © 2018 Mettenmeier GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
*
*     http://www.eclipse.org/legal/epl-v10.html
*
******************************************************************************
////
= openKonsequenz "Standby Planning" - How to build 
:Date: 2018-07-04
:Revision: 1

This document describes how the modules for the "Standby Planning" application can be build.

== Front End
//TODO FE Build beschreiben.
The front end GIT repository is found at
----
https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.standbyPlanning.frontend
----

It requires *Node JS 8.1* to build. Make sure it is installed.

In the repository's root directory run the command `npm install` to install the required node modules. Once that finishes, the build process is started with the following command.
----
npm run test && npm run build
----

To get the final `.war` file, it needs to be wrapped via 7zip, after the `WEB-INF` directory has been copied into its root. This can be accomplished with the following two commands.
----
cp -r ./dist/assets/WEB-INF ./dist

7z a -tzip "oKBereitschaftsplanungFrontend.war" "./dist/*" -mx5
----

== Back End (manual build) 
The back end is a maven based java project that can be build by a mvn statement like this.

 * mvn clean org.jacoco:jacoco-maven-plugin:0.8.1:prepare-agent install tomcat7:redeploy

.list of statements
[cols="2", options="header"]
|===
|statement |description
|mvn|execute the maven command 
|clean|maven phase to remove the existing packages in project
|org.jacoco:jacoco-maven-plugin:0.8.1:prepare-agent |agent that analyse the test results to get a test rating for the unit tests
|install|maven command to build a .jar or .war file
|tomcat7:redeploy |maven command to move the builded .war file to the configured tomcat.
|sonar:sonar |pushes the needed data to a sonarqube
|===

== 2.b Back End (automatic build)
//TODO add Jenkins URL of Eclipse Project
