Please follow these steps to setup your development environment using IntelliJ IDEA and Kubernetes.
Let us know in case you need additional help.
This guide is intended for Windows developers and uses powershell and not cmd for any CLI examples.
My windows account username is
crist so whenever you see that, please replace it with yours.
Download and install git from https://git-scm.com/downloads, then make sure it is added to your PATH.
To check if it’s added to PATH open powershell and run:
You should get an output similar to this:
PS C:\Users\crist> git --version git version 2.22.0.windows.1
Clone metasfresh projects
All the metasfresh projects will be located in
this is the root folder of our project.
The following code will create
work-metas then clone all the metasfresh modules needed from github:
mkdir c:/work-metas cd C:/work-metas git clone https://github.com/metasfresh/metasfresh git clone https://github.com/metasfresh/metasfresh-dev
Install Oracle Java 8
Download and install Oracle JDK 8, then set the
JAVA_HOME path variable.
To add the path variable using powershell with administrator rights, run:
setx JAVA_HOME 'C:\Program Files\Java\jdk1.8.0_212' SUCCESS: Specified value was saved.
Download and install the latest LTS version of Node.js. This is needed for the React
metasfresh-webui-frontend and for
Install Postgres Command Line Tools
There’s no need to install the full Postgres database. Metasfresh uses
psql for running the sql migrations, and it is found in the Command Line Tools.
Download the installer for postgresql version 10 or later from https://www.enterprisedb.com/downloads/postgres-postgresql-downloads, and select Command Line Tools:
then add the
bin folder to Path with
$PATH = [Environment]::GetEnvironmentVariable("PATH", "User") $pg_path = "C:\Program Files\PostgreSQL\10\bin" [Environment]::SetEnvironmentVariable("PATH", "$PATH;$pg_path", "User")
$pg_path to the real directory on your system.
Set up apache maven
Metasfresh uses maven and even though Intellij Idea has maven built-in, we have noticed that if something breaks in intellij (eg. intellij shows an error that some file has compilation errors even though logically everything should be in order), it is much easier (and less time consuming) to recompile the metasfresh project from CLI using maven.
Download maven zip archive from https://maven.apache.org/download.cgi
Maven has no installer and there’s no need to add maven to PATH, so extract the archive to
C:/ then rename the folder to
C:/apache-maven-3.6.3 (or whatever other version is currently available).
In the end you should end up with a folder structure on the disk such that mvn executable is found in
C:\mvn\bin\mvn.cmd. Please note that
C:\mvn\apache-maven-3.6.3\bin\mvn.cmd is the wrong path for this tutorial.
To test that maven is installed in the correct folder, run:
and you should get output similar to:
PS C:\Users\crist> C:\mvn\bin\mvn.cmd --version Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T22:00:29+03:00) Maven home: C:\mvn\bin\.. Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jre1.8.0_212 Default locale: en_US, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" PS C:\Users\crist>
Set up settings.xml from
You should copy the file to
C:/Users/crist/.m2/settings.xml file (create the
.m2 folder if it doesn’t exist).
Compile the project using maven
This is a long-duration action, since we’re compiling the project and also downloading all the dependencies.
Run the following code in powershell (make sure to replace
crist with your username:
$start = Date $env:JAVA_HOME = "C:\Program Files\Java\jdk1.8.0_212" $mvnSettingsFile = "C:\Users\crist\.m2\settings.xml" cd C:\work-metas\metasfresh\backend C:\mvn\bin\mvn.cmd -T 2C -DskipTests --fail-at-end --settings $mvnSettingsFile clean install echo "Elapsed: " (Date) - $start
When this step is finished, you will see the following:
Elapsed: Days : 0 Hours : 0 Minutes : 0 Seconds : 7 Milliseconds : 671 Ticks : 76716038 TotalDays : 8.87917106481481E-05 TotalHours : 0.00213100105555556 TotalMinutes : 0.127860063333333 TotalSeconds : 7.6716038 TotalMilliseconds : 7671.6038
Install Jetbrains Toolbox and download Intellij Idea Ultimate
Download the installer from https://www.jetbrains.com/toolbox-app/.
We recommend using the Toolbox app as it helps tremendously with keeping intellij up to date, using different intellij idea versions for different projects and managing your projects.
Note: This guide is for the Intellij IDEA Ultimate (version 2019.3, but in all other ultimate versions the setup should be similar) but with some exceptions it might work with the community edition as well.
We recommend the ultimate edition as it has additional features for web/spring applications.
Configure maven in intellij
Start Intellij then go to Configure -> Settings
Build, Execution, Deployment -> Build Tools -> Maven make sure the path to the settings file is the one you downloaded previously.
Build, Execution, Deployment -> Build Tools -> Maven -> Importing make sure the items are checked/unchecked as below.
Import metasfresh in intellij idea
Import Project and select the root folder
This already is a maven project:
Check Search for projects recursively, all other settings should be as previously configured:
Create module groups for multi-module Maven projects is unchecked!
Just press next
Select project JDK:
Finish the import:
Now Intellij will start and it will search and index the project and all the libraries:
During this process you will be asked multiple times to remove some obsolete projects, press Yes:
Install Lombok plugin:
Copy the development settings
Close Intellij and any running metasfresh applications then copy the folders of
This copies all the settings needed to connect to the docker instances of postgres and rabbitmq.
Copy the metasfresh-specific intellij configurations
Close intellij idea then copy the contents of
and replace any existing files.
With this you will have a lot of the metasfresh code conventions, run configurations, annotation settings, etc. already prepared for you.
Install and set up docker and kubernetes (k8s)
Follow the tutorial here to create a docker-hub account, download and install docker: https://docs.docker.com/docker-for-windows/install/.
Note that you will have to restart your computer after the installation.
Go to Docker settings
Advancedand adjust the settings as follows:
Kubernetes and Enable kubernetes as follows:
Run in powershell the script
C:\work-metas\metasfresh-dist\dist\src\main\kubernetes\manifests\dev\install.ps1 which creates the needed deployments.
Wait until all the pods are in status “Running”.
Check https://kubernetes.io/docs/reference/kubectl/cheatsheet/ for help.
Run metasfresh from Intellij
Open Idea and the project and run
File -> Invalidate Caches / Restart... so that it properly loads the settings we previously copied.
Import the maven pom
Sorry you have to do this, but since we erased all the configs generated by intellij above, this is a needed step.
Show run configurations in services
If there are compilation errors, make sure the correct JDK version is selected in project structure (Ctrl+Alt+Shift+A)
Check that all 3 projects compile correctly and start. The 3 launchers should start however Metasfresh won’t successfully run yet as there’s 1 more step left.
In this last step you have to ask the metasfresh team for our after import secret sauce for developing on metasfresh and creating valid migration scripts.
After receiving that, you’re ready to develop on the metasfresh project.
We await your PRs. Good luck !
Optional (yet suggested) steps
Use Eclipser plugin
- There are some eclipse launcher files in the project. You could install eclipser plugin and
convert the files whenever you need them. Just right click on a “.launch” file and you’ll find the
Convert with eclipseroption.
Eclipse and IntelliJ IDEA interop
Eclipse can only find
// todo comments if todo is in caps rage. To do this you should go to
Settings -> Editor -> Live Templates and add a new template as follows:
Learn your tools
It pains me greatly when i see people using the mouse and searching through menus to accomplish some action. Most often than not your IDE has a keyboard shortcut for doing a particular task. USE. IT.
- Read all the
Tip of the Daytips
- Install the plugin
IDE Features Trainerand do the tutorials there
- use the shortcut Ctrl+Shift+A
- use the shortcut Shift+Shift
- let the IDE do refactorings for you, instead of editing everything manually