[development] Adding generic, maven based run and debug. (#2435)
* [development] Adding generic, maven based run and debug. Also see https://github.com/openhab/openhab-distro/pull/1707 Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com> * [development] Adding generic, maven based run and debug. Apply MR comments Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com> * [development] Adding generic, maven based run and debug. Apply MR comments Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com> --------- Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>pull/2437/head
parent
c64ed13467
commit
3298dc8463
|
@ -213,6 +213,15 @@ module.exports = [
|
||||||
collapsable: true,
|
collapsable: true,
|
||||||
children: [
|
children: [
|
||||||
['developer/', 'Overview & Introduction'],
|
['developer/', 'Overview & Introduction'],
|
||||||
|
{ title: 'IDEs',
|
||||||
|
collapsable: true,
|
||||||
|
children: [
|
||||||
|
'developer/ide/eclipse',
|
||||||
|
'developer/ide/intellij',
|
||||||
|
'developer/ide/vscode',
|
||||||
|
'developer/ide/generic',
|
||||||
|
]
|
||||||
|
},
|
||||||
'developer/guidelines',
|
'developer/guidelines',
|
||||||
'developer/addons/',
|
'developer/addons/',
|
||||||
'developer/bindings/',
|
'developer/bindings/',
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
---
|
||||||
|
layout: developersguide
|
||||||
|
title: Generic IDEs hints
|
||||||
|
---
|
||||||
|
|
||||||
|
# Generic setup for your IDE
|
||||||
|
|
||||||
|
## The demo project with Maven
|
||||||
|
|
||||||
|
It can be particularly useful, regardless of the IDE, to be able to launch a development instance of openHAB.
|
||||||
|
This is the purpose of the `org.openhab.demo.app` project, which can be found in the `openhab-distro` repository.
|
||||||
|
|
||||||
|
To do this, you need to clone the [openhab distro repository](https://www.github.com/openhab/openhab-distro)
|
||||||
|
|
||||||
|
To launch the demo project, Eclipse [has its bnd plugin](./eclipse.html#working-with-add-ons).
|
||||||
|
However, it can sometimes be particularly slow. Maven is therefore a completely viable alternative (and the only option
|
||||||
|
available for other IDEs).
|
||||||
|
Using the demo project through Maven will allow you to run an openHAB instance that uses the artifacts present in your
|
||||||
|
local Maven repository (and downloads them beforehand if they are not already present).
|
||||||
|
|
||||||
|
This means that if you develop an add-on (or even a `openhab-core` module), once you have built and installed it, it
|
||||||
|
will be available in your local repository and the demo project will be able to use your development.
|
||||||
|
|
||||||
|
### Build project
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
Make sure you meet the prerequisites like the Java and Maven version. As of openHAB 5.x Java 21.x is required and at least mvn 3.8.6.
|
||||||
|
:::
|
||||||
|
|
||||||
|
Use Maven to build the projects you want to develop for. It is important to use the `mvn install` option to copy the artifact in your local repository.
|
||||||
|
|
||||||
|
### Preparation
|
||||||
|
|
||||||
|
There are two files to take care of:
|
||||||
|
|
||||||
|
- `/openhab-distro/launch/app/pom.xml` must contain the artifact you are developing in the dependencies section (search for "uncomment this and add the name of your binding that you want to work on")
|
||||||
|
|
||||||
|
- `/openhab-distro/launch/app/app.bndrun` will list the modules needed by the OSGi runtime. You also have to add your add-on in the `runrequires` section (e.g. `bnd.identity;id='org.openhab.binding.YOURBINDINGNAME'` and don't forget to add the `\` to the previous line if you adding it to the end of the list)
|
||||||
|
|
||||||
|
After editing this two files, use this maven command from the `/openhab-distro/launch/app/` directory:
|
||||||
|
|
||||||
|
`mvn bnd-resolver:resolve`
|
||||||
|
|
||||||
|
This will ask the bnd plugin to 'resolve' the dependencies (i.e. to calculate which bundles to run in the OSGi runtime) and update
|
||||||
|
the `runbundles` section of the `app.bndrun` file accordingly.
|
||||||
|
Each time you add a dependency or change the version, you HAVE to run a resolve task.
|
||||||
|
|
||||||
|
::: warning
|
||||||
|
The `pom.xml` file is versioned. The version fields present in the file must match the modules
|
||||||
|
you are developing. For example, if you are developing a module for `openhab-core` and it is deployed as version
|
||||||
|
5.0.0-SNAPSHOT in your local repository, you must use this same 5.0.0-SNAPSHOT version in the version field of the
|
||||||
|
`org.openhab.demo.app` artifact. Similarly, for add-on development, ensure that the version field of your add-on in the
|
||||||
|
pom.xml file matches the version you are currently developing. If you use incorrect versions, you will not understand
|
||||||
|
why your changes are not being taken into account
|
||||||
|
:::
|
||||||
|
|
||||||
|
### Launching and debugging
|
||||||
|
|
||||||
|
Go to the directory `/openhab-distro/launch/app`
|
||||||
|
|
||||||
|
To launch the demo app, using the content of the `app.bndrun` file:
|
||||||
|
|
||||||
|
`mvn bnd-run:run`
|
||||||
|
|
||||||
|
You can now open the app in your browser via [http://localhost:8080/](http://localhost:8080/).
|
||||||
|
|
||||||
|
To launch in debug mode:
|
||||||
|
|
||||||
|
`mvn -D-runjdb=10001 package bnd-run:run`
|
||||||
|
|
||||||
|
Wait for the process to pause and show the log `Listening for transport...` then attach your IDE to the remote debugging
|
||||||
|
session (here, on port 10001). The openHAB demo project startup process will then resume and you will be able to
|
||||||
|
open it in your browser.
|
||||||
|
|
||||||
|
Each modification of your code requires rebuilding your add-on with `mvn clean install` so that it is
|
||||||
|
deployed in your local repository and accessible for the next execution.
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
|
@ -7,30 +7,44 @@ title: IntelliJ
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- git, Maven, IntelliJ and Java 17 are installed
|
- git, Maven (at least 3.8.6), IntelliJ and Java (21) are installed and available in the path.
|
||||||
|
|
||||||
## Install openHAB distribution
|
## Build the repositories
|
||||||
|
|
||||||
|
1. Fork and clone the repositories into a parent directory (Reference `<PARENT_DIR>` from now on for this article). Take only the one(s) you will work on:
|
||||||
|
|
||||||
|
- [openhab addons repository](https://www.github.com/openhab/openhab-addons)
|
||||||
|
- [openhab core repository](https://www.github.com/openhab/openhab-core)
|
||||||
|
- [openhab webui repository](https://www.github.com/openhab/openhab-webui)
|
||||||
|
|
||||||
|
Use the command `git clone https://github.com/<yourgitusername>/openhab-<addons|core|webui>` (replace git user name accordingly).
|
||||||
|
|
||||||
|
1. Open IntelliJ, select the file/open, and choose the `<PARENT_DIR>`
|
||||||
|
1. Open The Module settings (inside `Project Settings`, or use F4). Click on the + button and select `Import module`.
|
||||||
|
1. Choose one of the repository directory you just cloned. select the Maven external model as import format.
|
||||||
|
IntelliJ will start importing and indexing. It will take while, wait until finished. The Module window should now be filled with a bunch of projects.
|
||||||
|

|
||||||
|
1. Repeat step 2 and 3 for all repositories you cloned.
|
||||||
|
1. Use Maven to clean & install projects. Make sure you use the required Maven version (3.8.6 is recommended).
|
||||||
|
|
||||||
|
- `mvn clean install` in the root of the repositories using commandline Maven (or IntelliJ Maven view)
|
||||||
|
- some of the add-ons might fail to build - if it's not the one you're interested in, that should not bother you
|
||||||
|
- when the Maven project finished, you should find the freshly built addon JAR in the target directory
|
||||||
|
|
||||||
|
You then have two main options to run your development: use the official distribution, or use Maven.
|
||||||
|
|
||||||
|
## Option 1: Use and debug from the official distribution
|
||||||
|
|
||||||
|
This is the simpler option, but you can only use it for add-on development.
|
||||||
|
|
||||||
|
### Install openHAB distribution
|
||||||
|
|
||||||
1. Install the official [openHAB distribution](https://www.openhab.org/download/)
|
1. Install the official [openHAB distribution](https://www.openhab.org/download/)
|
||||||
1. Start the distribution **in debug mode** (use `./start_debug.sh` instead of `./start.sh` in step 4)
|
1. Start the distribution **in debug mode** (use `./start_debug.sh` instead of `./start.sh` in step 4)
|
||||||
|
|
||||||
This article refers to the directory where you installed the distribution as `<DISTRO_DIR>`.
|
This article refers to the directory where you installed the distribution as `<DISTRO_DIR>`.
|
||||||
|
|
||||||
## Build the addons repository
|
### Debug your addon
|
||||||
|
|
||||||
1. Fork and clone the [openhab addons repository](https://www.github.com/openhab/openhab-addons) into a new directory (Reference `<ADDON_DIR>` from now on for this article) with `git clone https://github.com/<yourgitusername>/openhab-addons` (replace git user name accordingly)
|
|
||||||
|
|
||||||
1. Open IntelliJ and create a new project from existing sources (File | New | Project from existing sources) and pick `<ADDON_DIR>`/pom.xml
|
|
||||||
|
|
||||||
IntelliJ will start importing, indexing and building, it will take while, wait until finished (see status bar)
|
|
||||||
|
|
||||||
1. Use Maven to clean & install the addons project
|
|
||||||
|
|
||||||
- mvn clean install in the root of `<ADDON_DIR>` using commandline Maven (or IntelliJ Maven view)
|
|
||||||
- some of the add-ons might fail to build - if it's not the one, you're interested in that should not bother you
|
|
||||||
- when the Maven project finished, you should find the freshly built addon JAR in the target directory
|
|
||||||
|
|
||||||
## Debug your addon
|
|
||||||
|
|
||||||
1. Copy the addon JAR to Openhab distribution created before
|
1. Copy the addon JAR to Openhab distribution created before
|
||||||
|
|
||||||
|
@ -52,3 +66,19 @@ This article refers to the directory where you installed the distribution as `<D
|
||||||

|

|
||||||
|
|
||||||
You can now add breakpoints to your project now and your test distro should stop there.
|
You can now add breakpoints to your project now and your test distro should stop there.
|
||||||
|
|
||||||
|
## Option 2: Use maven-bdn plugin and the demo project
|
||||||
|
|
||||||
|
This option is more complex, but will allow you to run/debug anything.
|
||||||
|
You will have to clone the additional repository openhab-distro repository in your `<PARENT_DIR>`. It contains the demo project.
|
||||||
|
Look at the [generic IDEs information](./generic.md) to know more about how to prepare and launch the demo project.
|
||||||
|
|
||||||
|
After this, instead of using the command line, you can setup IntelliJ to launch the maven tasks.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
When launching the demo project from IntelliJ with the bnd debug option (in VM options in the screenshot above),
|
||||||
|
look in the Run window for the mention "Listening for transport".
|
||||||
|
You can then click on the `Attach debugger` to automatically start a debugging session.
|
||||||
|
|
||||||
|

|
||||||
|
|
|
@ -63,22 +63,27 @@ We have prepared some step-by-step guides for the following IDEs:
|
||||||
|
|
||||||
<table style="width:100%">
|
<table style="width:100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width:30%">
|
<td style="width:50%">
|
||||||
|
|
||||||
[](ide/vscode.html)
|
[](ide/vscode.html)
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td style="width:30%">
|
<td style="width:50%">
|
||||||
|
|
||||||
[](ide/eclipse.html)
|
[](ide/eclipse.html)
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td style="width:30%">
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="width:50%">
|
||||||
|
|
||||||
[](ide/intellij.html)
|
[](ide/intellij.html)
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
<td style="width:50%">
|
||||||
|
|
||||||
|
[](ide/generic.html)
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
Not sure what to choose?: openHAB maintainers use [Eclipse IDE](https://wiki.eclipse.org/Eclipse_Installer).
|
Not sure what to choose?: openHAB maintainers use [Eclipse IDE](https://wiki.eclipse.org/Eclipse_Installer).
|
||||||
|
|
Loading…
Reference in New Issue