153 lines
4.4 KiB
Markdown
153 lines
4.4 KiB
Markdown
---
|
|
title: 'Development'
|
|
weight: 90
|
|
---
|
|
|
|
## Prerequisites
|
|
To start developing Strolch you need an installed:
|
|
* Java JDK 11
|
|
* Apache Maven 3.x
|
|
|
|
## Building Strolch
|
|
|
|
{{% notice tip %}} Note: You don't have to build Strolch if you want to use the
|
|
version on Maven central, but if you need a snapshot version, or the release you
|
|
want isn't on central, then go ahead and build Strolch. {{% /notice %}}
|
|
|
|
Building Strolch is just a few lines:
|
|
|
|
```shell
|
|
git clone https://github.com/strolch-li/strolch.git
|
|
cd strolch
|
|
mvn clean install -DskipTests
|
|
```
|
|
|
|
{{% notice warning %}}
|
|
Note: To run the tests you will need to configure the PostgreSQL Databases. See
|
|
the README in the module.
|
|
{{% /notice %}}
|
|
|
|
After running the Maven build, you will have a full build of all Strolch
|
|
projects. Now you can start modifying the projects, and add your own features,
|
|
or, far more interesting, start developing your projects using the Strolch
|
|
agent.
|
|
|
|
## Converting an existing application
|
|
|
|
You can convert an existing application to a Strolch agent, but this might be a
|
|
bit daunting in the beginning. If you are planning on doing this, first create a
|
|
test application using the maven archetypes, so that you can get a feel for the configuration.
|
|
|
|
Once that works, use the archetypes configuration to reconfigure your project to start as a Strolch agent.
|
|
|
|
{{% notice warning %}}
|
|
Note: Beware to select the archetype pertaining to your use case:
|
|
* For a web app use the [li.strolch.mvn.archetype.webapp](/development/#creating-a-java-strolch-web-app)
|
|
* For a application with a main method use [li.strolch.mvn.archetype.main](/development/#creating-a-simple-java-strolch-app)
|
|
{{% /notice %}}
|
|
|
|
## Creating a Strolch App
|
|
|
|
To create your own Strolch App, you can use Maven's archetype generation. There
|
|
are two versions, one is a simple Java App which you can use to directly access
|
|
the Strolch runtime, and the second is to create a Java Web App, which is the
|
|
usual way to run Strolch runtimes.
|
|
|
|
{{% notice warning %}}
|
|
Note: you need to have installed Strolch to your local maven repo, otherwise the
|
|
archetype won't be available.
|
|
{{% /notice %}}
|
|
|
|
### Creating a Java Strolch Web App
|
|
|
|
The following shows the maven command to create the new maven project. Note that you should replace the placeholders in the brackets:
|
|
|
|
{{% notice tip %}}
|
|
The code is also available on [GitHub](https://github.com/strolch-li/strolch/tree/develop/li.strolch.mvn.archetype.webapp).
|
|
{{% /notice %}}
|
|
|
|
```shell
|
|
mvn archetype:generate \
|
|
-DarchetypeGroupId=li.strolch \
|
|
-DarchetypeArtifactId=li.strolch.mvn.archetype.webapp \
|
|
-DarchetypeVersion=1.6.0-SNAPSHOT \
|
|
-DgroupId=<my.groupid> \
|
|
-DartifactId=<my-artifactId> \
|
|
-Dversion=<my.version> \
|
|
-DappName="<my app name>"
|
|
```
|
|
|
|
#### Install the web dependencies
|
|
|
|
The Strolch Web App uses [NodeJS v11.x](https://nodejs.org/download/release/v11.15.0/) to build the web dependencies. Please
|
|
download the relevant platform's package, unpack it, and add the `bin` directory
|
|
to your path variable.
|
|
|
|
Once NodeJS is installed, then you can prepare the web dependencies:
|
|
|
|
```shell
|
|
cd src/main/webapp/
|
|
npm install gulp -g
|
|
npm install
|
|
gulp
|
|
```
|
|
|
|
{{% notice warning %}} Note: Whenever the bower.json is changed then you should
|
|
again call npm install inside the webapp folder. {{% /notice %}}
|
|
|
|
#### Building the WAR
|
|
|
|
Building the WAR uses the `package` maven goal, but to have the optimized WAR
|
|
use the `release` profile:
|
|
|
|
```shell
|
|
mvn clean package -Prelease
|
|
```
|
|
|
|
Happy coding =))
|
|
|
|
### Creating a simple Java Strolch App
|
|
|
|
The following shows the maven command to create the new maven project. Note that
|
|
you should replace the placeholders in the brackets:
|
|
|
|
{{% notice tip %}}
|
|
The code is also available on [GitHub](https://github.com/strolch-li/strolch/tree/develop/li.strolch.mvn.archetype.main).
|
|
{{% /notice %}}
|
|
|
|
```shell
|
|
mvn archetype:generate \
|
|
-DarchetypeGroupId=li.strolch \
|
|
-DarchetypeArtifactId=li.strolch.mvn.archetype.main \
|
|
-DarchetypeVersion=1.6.0-SNAPSHOT \
|
|
-DgroupId=<my.groupid> \
|
|
-DartifactId=<my-artifactId> \
|
|
-Dversion=<my.version> \
|
|
-DappName="<my app name>"
|
|
```
|
|
|
|
You change into the directory of the new project and then build the project by calling:
|
|
|
|
```shell
|
|
cd <my-artifactId>
|
|
mvn clean package
|
|
|
|
```
|
|
|
|
Start the program using:
|
|
|
|
```shell
|
|
mvn exec:java
|
|
```
|
|
|
|
Happy coding =))
|
|
|
|
## Tools used
|
|
|
|
The following tools are used to develop Strolch and Strolch-based projects:
|
|
|
|
* [IntelliJ](https://www.jetbrains.com/idea/download/#section=linux)
|
|
* [Apache Maven](https://maven.apache.org/)
|
|
* [Git SCM](http://git-scm.com/)
|
|
|