### Software Requirements You should have the following things installed: * Git * Java 25 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/)) * Maven (Note that the [Maven Wrapper](https://maven.apache.org/tools/wrapper/) is shipped with the repo) ### Recommended setup * Install `IntelliJ` * Recommended setup actions * Disable not needed plugins * Disable [telemetry](https://www.jetbrains.com/help/idea/settings-usage-statistics.html) * Configure the available memory * Import the project * You will get prompted to install the required plugins * Ensure that everything is encoded in `UTF-8` * Ensure that the JDK/Java-Version is correct #### [SpringBoot-Developer-Tools](https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.devtools) ... should automatically be enabled.
If you are changing a file and build the project, parts of the app get restarted.
Bigger changes may require a complete restart. * [Vaadin automatically reloads the UI on each restart](https://vaadin.com/docs/latest/flow/configuration/live-reload/spring-boot).
You can control this behavior with the ``vaadin.devmode.liveReload.enabled`` property (default: ``true``). ## Releasing Before releasing: * Consider doing a `test-deployment` before actually releasing. * Check the [changelog](CHANGELOG.md) If the `develop` is ready for release, create a pull request to the `master`-Branch and merge the changes When the release is finished do the following: * Merge the auto-generated PR (with the incremented version number) back into the `develop` * Ensure that [Vaadin Directory](https://vaadin.com/directory/) syncs the update and maybe update the component / version there ### Release failures There are 2 modes of release failure: 1. The remote server was e.g. down and non of the artifacts got published 2. There was a build failure during release and only parts of the artifacts got released In case 1 we can re-release the existing version,
in case 2 we have to release a new version when we can't get the artifacts deleted (as is the case with Maven Central) #### How-to: Re-Releasing an existing version 1. Delete the release on GitHub 2. Delete the release Git tag from the repo (locally and remote!) 3. Delete the ``master``-Branch and re-create it from the ``develop`` branch (or reset it to the state before the release-workflow commits have been done) * This requires __temporarily__ removing the branch protection * Once this was done a new release is triggered immediately! #### How-to: Releasing a new version 1. Merge the ``master`` branch back into ``develop`` (or another temporary branch) 2. Make sure all master branch versions are prepared for a new release
e.g. if the broken release was ``1.0.0`` the version should now be at ``1.0.1-SNAPSHOT`` - the ``SNAPSHOT`` is important for the workflow! 3. Mark the broken release as broken e.g. inside the Changelog, GitHub Release page, etc.
You can use something like this: ``` > [!WARNING] > This release is broken as my cat accidentally clicked the abort button during the process ``` 4. Merge the changes back into the ``master`` branch to trigger a new release