## Headless Builds Official builds and testing of the platform are done with Maven. To build the platform, run: mvn package or to run unit tests as well: mvn verify ## Development ### Eclipse IDE Setup It is generally recommended to using the latest Eclipse IDE release. However, use of Eclipse IDE 2020-03 (4.15) release is not recommended because of [JDT bug 561338](https://bugs.eclipse.org/bugs/show_bug.cgi?id=561338). Therefore the current recommended versions are * 2019-12 (4.14) * 2020-06 (4.16) Milestone builds for the adventurous, which have the mentioned bug fixed. #### Install Eclipse IDE Plug-ins Two plug-ins need to be installed into the IDE from P2 repositories: 1. Eclipse Target Platform Definition DSL and Generator from the P2 repository at http://www.simantics.org/update/cbi/tpd/3.0.0-SNAPSHOT/ * Please read the detailed installation and basic use instructions from [the tool's own GitHub site](https://github.com/eclipse-cbi/targetplatform-dsl) 2. Simantics Graph Compiler plug-in from http://www.simantics.org/update/utils/ * Enables the IDE to compile `/graph/*.pgraph` files into `/graph.tg` for installation into Simantics database. #### Install Required JDK This version of the platform requires at least JDK 11. It is recommended to download the Hotspot variant from [AdoptOpenJDK.net](https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot). You can also use newer JDKs but 11 as an LTS version is recommended, especially for bundling with built products. 1. Download and install a compatible JDK version * For Windows, download the `.msi` installer and install it 2. Open IDE preference page **Java / Installed JREs**. If the previously installed JDK is not already in use, add it as a *Standard VM* installation to the list and select the added JRE as the active JRE. 3. Open IDE preference page **Java / Installed JREs / Execution Environments** and ensure that your selected JDK is selected in the *Compatible JREs* for `JavaSE-1.6` - `JavaSE-11`. #### Clone Repository into Eclipse Use [Eclipse Git Integration - EGit](https://wiki.eclipse.org/EGit/User_Guide) to clone repositories. ##### gerrit.simantics.org Gerrit is currently still the authoritative repository for the platform, so use the following for now Anonymous HTTP cloning without push rights: git clone "https://gerrit.simantics.org/r/simantics/platform" Developers with push access: git clone "ssh://lehtonen@gerrit.simantics.org:29418/simantics/platform" ##### gitlab.simantics.org GitLab will become the authoritative repository for the platform in the future. Until then, please do not push directly to this repository. Just follow GitLab's cloning instructions at https://gitlab.simantics.org/simantics/platform. Use HTTP cloning for anonymous access and SSH for developer access. #### Import Projects into Workspace From the main menu, uncheck *Build Automatically* from the *Project* menu to prevent unnecessary build failures from happening before the setup is complete. From the *Git Repositories* view in Eclipse, choose *Import Projects* from the repository context menu. Import all projects into their own working set. #### Set Target Platform To get the platform to compile in the IDE, you will need to use one of the custom target platforms provided [releng/org.simantics.sdk.build.targetdefinition/](releng/org.simantics.sdk.build.targetdefinition). To use a minimal target platform, open [releng/org.simantics.sdk.build.targetdefinition/org.simantics.sdk.build.targetdefinition.tpd](releng/org.simantics.sdk.build.targetdefinition/org.simantics.sdk.build.targetdefinition.tpd) using the *Target Platform DSL Editor* and press `CTRL+R` in the editor to re-build the corresponding .target file and set it as the current platform. Re-enable *Build Automatically* from the *Project* main menu to start the build which should now succeed. #### Test Open [releng/org.simantics.desktop.rcp.product/simantics-desktop.product](releng/org.simantics.desktop.rcp.product/simantics-desktop.product) and press `Launch an Eclipse application in Debug mode`. The basic desktop product should start.