Spring Tool Suite 3.9.1: New and Noteworthy

General introduction video to the Spring Tool Suite

Josh Long published a nice Spring Tips video, introducing the Spring Tool Suite.


This video doesn't feature all the latest enhancements and changes from this 3.9.1 release, but provides a great introduction to the Spring Tool Suite in general.

Updates and New/Enhanced Features

Eclipse Oxygen.1a (4.7.1a), including support for Java9 and JUnit 5

The default STS distribution is now based on the recently released Eclipse Oxygen.1a (4.7.1a) release. This includes support for JDK9 and JUnit 5 now out of the box.

JDK9 compatibility warning (attention if you are using Spring Boot 1.5.x or earlier)

STS 3.9.1 runs fine on JDK9 (and supports developing Java 9 applications). However, in case you use Maven and have a build plugin configured for your project that isn't compatible with Java 9 yet, the build in Eclipse/STS will fail with an exception error message. This is the case for Spring Boot projects that use Spring Boot 1.5.x or earlier.

In those cases, we recommend to run Eclipse/STS on top of a JDK8. You can still configure a Java 9 JRE and develop Java 9 applications, but the IDE itself would run on top of a Java 8 runtime.

To make people aware of this incompatibility, a special dialog will pop up as soon as STS identifies such an error and will notify you of the required steps how to avoid this error.

macOS version of STS ships as DMG file

The macOS distribution of STS now ships as signed DMG file. This makes installing STS easy and avoid running into issues when users don't move the app after extracting the tar.gz file in the past (due to Gatekeeper and App Translocation security features on macOS).

Pivotal tc Server updated to 3.2.8

The latest Pivotal tc Server release 3.2.8 is now included in the STS distribution bundle.

Automatic conversion of boot property files to YAML

STS 3.9.1 allows you to automatically convert application.properties config files into YAML files. Right-click on the application.properties file and select the automatic conversation to YAML. A preview diff dialog will show up and display a nice diff preview of the result.

Changes to the Spring Cloud CLI integration

Spring Cloud CLI installation in STS is completely user driven now rather then STS doing auto-install. Boot Dashboard shows a hyper-link to install Spring Cloud CLI services.

User can click the hyper-link and follow the wizard to install Spring Cloud CLI into the current Spring Boot Installation pointed by the STS

New code templates for @Get/Post/Put/Delete/PatchMapping

STS 3.9.1 enhances the code templates around request mappings with new ones for the more specific meta annotations GetMapping, PostMapping, PutMapping, and DeleteMapping.

Experimental: use Spring Boot Thin JAR wrapper to launch boot apps

As an experimental feature this release of STS introduces the option to launch Spring Boot apps from within the IDE using the Thin launcher approach that Dave Syer implemented: spring-boot-thin-launcher (on GitHub). This approach allows you to create a thin jar without all the dependencies that you have configured in your pom. Instead, a thin jar launcher is placed and configured into your small JAR file. When the app launches, the thin jar launcher will resolve and fetch the necessary dependencies and launch the boot app.

Even though this approach to launch an app doesn't make a lot of sense when working on the app in an IDE like STS (since the IDE already resolved the necessary dependencies for you), you might want to launch the boot app from time to time using this approach for testing purposes. To support that, we include preliminary support for this in STS.

In order to use this, you have to point STS to the thin jar launcher that you would like to use in the preferences:

You should select the thin jar launcher library that you would like to use for launching the app. Usually, if you have the thin jar launcher configured in your build, Maven might already downloaded the corresponding artifact (to be used during the Maven build), so you can look that up in your local Maven repo. The name of the JAR is, for example: spring-boot-thin-wrapper-1.0.7.RELEASE.jar.

Once you configured this launcher in the preferences, you can enable it for each boot app launch config:


Important Changes and Fixes



Issues now tracked on GitHub Issues

Issues around the Spring Tool Suite and the Spring IDE are tracked on GitHub from now on: https://github.com/spring-projects/spring-ide/issues.

Thanks for using the automatic error reporting

We would also like to thank our users for using the automated error reporting that we included since the 3.8.2 release and for sending us all those error reports. We used them to fix issues and improve reliability in this release. And we will continue to do that. So please keep those error reports coming!

In case you see a notification showing up that our error report quota exceeded, don't be surprised. With support from CodeTrails, we use a limited plan for this error reporting facility - and that might cause our quota to exceed from time to time. If you want to switch off those notifications, please go to the Preferences -> General -> Notifications.

Manual Maven support going to be removed soon

We plan to remove the support for manual Maven projects from STS and Spring IDE in future versions of STS and Spring IDE. The manual maven support was used in the past when projects used Maven, but didn't opt-in to use the direct Maven support in Eclipse via the m2e project. While projects can still decide to not use m2e for their projects, the support for that via additional menu actions in STS will be gone.



Miscellaneous

Useful Links

Download STS: https://spring.io/tools/sts/all

Spring Tools Issue tracker: https://github.com/spring-projects/spring-ide/issues


Known issues in this release

Running on macOS High Sierra (10.13)

STS 3.9.1 can run on top of macOS High Sierra. But due to a bug the ANSI Console feature (the one that nicely colors the output in the console view if the app uses ANSI coloring) doesn't work on macOS High Sierra.

https://github.com/spring-projects/spring-ide/issues/196

The issue on GitHub describes various workarounds for this issue. To avoid running into this issue, STS 3.9.1 disables the ANSI color output option for Spring Boot launch configs by default when running on macOS High Sierra.

You can still enable the ansi coloring via the VM arguments manually, in case you need to.


Deleting Eureka service instances from Boot Dashboard

Deleting certain Eureka service instances, like p-service-registry in Pivotal Web Services, from boot dashboard Cloud Foundry targets may experience problems with timeouts. The same issue may be found when deleting them from Eclipse Tools for Cloud Foundry (CFT). A workaround is to use the cf CLI to delete these service instances.


Running on JDK9

STS 3.9.1 can run on top of a JDK out-of-the-box. However, please notice that the Maven support in Eclipse/STS runs within the JVM of the IDE and therefore also uses the JDK9 runtime. While that isn't necessarily a problem, having Maven modules in your build that aren't compatible with Java 9 might cause your project build to fail in Eclipse/STS.

This is the case, for example, if you use Spring Boot 1.5.x or earlier versions, which uses an older version of the Maven jar plugin, which fails when running on top of a Java 9 VM. In that case we recommend to configure Eclipse/STS to run on top of a Java 8 runtime (by modifying the eclipse.ini or sts.ini file accordingyly).


Spring Boot dashboard ngrok tunneling feature doesn't support Spring Cloud Services yet

The Spring Boot Dashboards ngrok tunnel feature doesn't work yet with remote service registries from Spring Cloud Services. Instead it works with self-deployed Eureka service registry apps on CF only (as described here). We are working on enhancing the ngrok tunnel feature to directly support Spring Cloud Services in the near future. In the meantime we published a tech note that describes how to setup ngrok tunneling in combination with SCS manually.


Silent loss of Functionality on Java 7 or earlier

STS 3.9.1 requires a JDK 8 or JDK9 to run on top of. If you are running it with an older JDK this may not be immediatlely apparant, but some of STS functionality will simply be 'absent' because the corresponding plugins are automatically disabled by OSGI because their requirements are not satisfied at runtime. See also below 'Setting the JDK'.


Setting the JDK

STS 3.9.1 requires a JDK 8 or JDK9 to run on top of. Nevertheless the native Eclipse launcher component might pick up a JRE or an older JDK automatically if you don't specify which JDK to run STS on top of. To avoid this, you can specify the JDK in the sts.ini file that comes with your STS installation. Add a line at the beginning "-vm" and an additional line below that which points to the "javaw" executable of the JDK on your machine. Here is a detailed explanation how to configure the JVM in the ini file.


Issues on Linux (GTK3)

Since Eclipse 4.5, Eclipse uses GTK3 is the default for the SWT widget library. In case you come across UI rendering glitches or related issues, you can try to avoid them by forcing SWT to switch back to using GTK2. Just set the environment variable "SWT_GTK3=0" before launching STS.


New and Noteworthy for previous releases

STS 3.9.0

STS 3.8.4

STS 3.8.0 - 3.8.3

STS 3.7.3

STS 3.7.2

STS 3.7.1

STS 3.7.0