Spring Tool Suite 3.8.3/3.8.2/3.8.1/3.8.0: New and Noteworthy

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


We would also like to thank our users for using the automated error reporting that we included in 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!

Updates and Fixes in 3.8.3

Eclipse Neon.2 (4.6.2)

The default STS distribution is now based on the recently released Eclipse Neon.2 (4.6.2) release.

Pivotal tc Server updated to 3.2.2

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

Important Changes and Fixes


Important Notes for 3.8.3

macOS Sierra causes lost settings and lost add-on installs

If you unpackage the STS archive on macOS Sierra and use it without moving it to a different location on your drive, macOS Sierra Gatekeeper activates a security feature called "Path Randomization" for the app. This causes the STS.app bundle to be copied to a private and randomized read-only folder on your disc every time you start STS after a restart of your machine. As a result, all your third-party installs are lost as well as your global configuration. As a workaround, please move the STS.app bundle to a different location on your drive before starting it.

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.



Updates and Fixes in 3.8.2

Eclipse Neon.1 (4.6.1)

The default STS distribution is now based on the recently released Eclipse Neon.1 (4.6.1) release. There is a nice 4min video on YouTube about noticable updates and improvements in Neon.1, alongside various bug fixes that went into this release.

Pivotal tc Server updated to 3.2.0

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

Automatic Error Reporting now included

The Spring Tool Suite now comes with automatic error reporting being included in the distribution. This allows you to report errors that happen under the hood of the IDE automatically to the development team.

This automatic error reporting mechanism is an opt-in mechanism that uses the same automatic error reporting infrastructure that the regular Eclipse Neon packages include. You can configure all the details via the preferences:



More details about the underlying technology, the exact information that is being transfered, where it is being stored, etc, can be found here: Terms of Use.

Spring Boot Dashboard: OAuth Token support

In case you use the nice integration of Cloud Foundry into the boot dashboard, you are now able to select the way the boot dashboard should remember your CF credentials. You can choose to not store the credentials at all, store them in the secure storage facility that is provided by Eclipse, or (and this option is new) to use an oauth token (which is stored by the boot dashboard in a local file).



Buildpack content assist now provides additional hints

The content assist for Cloud Foundry manifest files provides nice content-assist for various property values. For the buildpack option those content-assist values are dynamically inferred from the configured Cloud Foundry targets in your boot dashboard.

While this is easy and convenient while using a single Cloud Foundry target, it can be confusing if you use various Cloud Foundry targets from different CF installations, since those can each provide a different set of available buildpacks.

To avoid this confusion, the boot dashboard now shows additional information if a buildpack is available only on a certain set of Cloud Foundry targets.



Custom URLs for Spring Initializr

It is now possible to specify the URL of the Spring Initializr instance that the Spring Starter Project wizard should use via the preference settings at Spring -> Boot -> Initializr. This is extremely useful if you use your own, customized version of the Spring Initializr app in-house and would like to use that directly in STS.



Spring Starter Wizard now allows default selections

Spring Starter Wizard has two new buttons:



Important Changes and Fixes




Updates and Fixes in 3.8.1

Pivotal tc Server updated to 3.1.5

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

Important Changes and Fixes



Spring Tool Suite 3.8.0: New and Noteworthy

Table of Contents

General Updates

Requirements

STS 3.8.0 requires a JDK 8 to run properly.

Eclipse Neon (4.6.0)

The default STS distribution is now based on the recently released Eclipse Neon (4.6) release.

Highlights from this Eclipse Neon release include substring code completion for Java content assist, word-wrap in text editors, commands/shortcuts/pinch gestures to zoom into text editors (especially useful when giving presentations), and more. Please find additional details in the Eclipse Neon New and Noteworthy.

Pivotal tc Server updated to 3.1.4

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

Support for Spring Insight removed

The support for Spring Insight that was part of the tc-server support got removed.

Buildship notification

We added a plugin from Eclipse Buildship to notify our users of using Eclipse Buildship instead of the legacy STS support for Gradle in the future.

Spring Tooling

Spring Boot Dashboard: customizable labels for CF targets

You can now change the labels for CF target nodes in the Boot Dashboard. To do so, right-click a node and select "Customize... -> Customize Label...":


You can type in any name you like. In addition to plain text you can also use a few placeholders in there:


In case you don't remember those placeholders, don't worry. You can hover over the text field for some help.


Spring Boot Dashboard: advanced support for multi-app manifest files

A single manifest.yml may specify deployment properties for multiple applications. When deploying an app, the Deployment Properties dialog's YAML Content section highlights application names and allows the user to choose one, by clicking on the visual annotations in the vertical ruler.


Spring Boot Dashboard: choose to remember password or not

The Cloud Foundry Target creation wizard and login dialog now have a "Remember Password" check-box. If you choose not to remember the password then you will be prompted to enter Cloud Foundry login credentials when connecting to the Cloud Foundry target or after restarting STS. Otherwise, the password will be stored in Secure Storage and you will not be prompted to enter the password again. Note that on Linux, you will still be prompted for the Secure Storage master password.


Spring Boot Dashboard: Skip SSL validation for Cloud Foundry targets

Skipping SSL validation is now supported when creating Cloud Foundry targets in the Spring Boot Dashboard.


Spring Boot Dashboard: customizable apps manager URL

The boot dashboard allows you to quickly jump to the web console of the apps manager of a Cloud Foundry target that you confgured in the boot dashboard. However, the URL of the apps manager can vary, depending on the version and configuration of your PCF installation. Therefore the boot dashboard allows you to customize the URL it uses to jump to that web console (via "Customize... -> Customize Cloud Admin Console URL"):


Spring Boot Dashboard: filter apps by project name

The filter in the boot dashboard is now also aware of project names. No need to organize your projects into working sets anymore, just type in a part of the project name and see the filtered list of projects in the boot dashboard.


Spring Boot: Additional code templates

Based on input from Spring Boot Core developers we have created some code templates useful in developing Spring/Spring Boot apps.

The templates are invoked through Eclipse's content-assist (i.e. you press CTRL-SPACE) and shown as completions when you type the template's name (or even just a part of the name).

Some templates are context-sensitive. This means that there are multiple versions of the template that expand into a different pattern depending on the context you are in. For example the notnull template expands to something that uses JUnit's assert in test code; it expands into something that uses Spring's assert anywhere else.

Below is a table showing all the templates we have added in this release:

Name[context] Screenshot
main
notnull[spring]
notnull[test]
jumockmvcwac
logger
logi
loge
logw
rtex

Spring Boot: JAR type search now asks for confirmation

"Jar Type Search" is a feature that was introduced in STS 3.5.0. It provides content-assist proposals in Spring Boot projects, for types that are not (yet) on the classpath. When selecting such a proposal the required dependency is automatically added to the project's maven pom.

Some people liked this, but others found it confusing or annoying rather than helpful because it was too easy to add undesirable elements to a pom accidentally.

STS 3.8.0 addresses this by asking for explicit confirmation before making changes to your pom. The confirmation dialog also has a "Disable" button, which you can click to disable it completely.


Spring Boot: trigger devtools restart manually

Spring Boot applications that have the boot devtools included in their classpath can quickly be restarted (without shutting down the JVM completely). This can now be triggered manually from the console:


Improvements to the Spring Boot YML and Properties Editors


Validation of comma-separated lists in the .properties editor

The Spring Boot Properties editor now knows how to check the validity of a list of comma-separated values. For example:

Content-assist in comma-separated lists in the .properties editor

Quickfix for deprecated properties in yml and properties editor

Both the yml and properties editor now provide a quickfix for deprecated property names (if the property defines a replacement in its metadata).

Note: The yml quickfix is smart enough to move a renamed property to a different place in the yml structure as needed:

Basic content-assist for 'Resource' type in yml/props editor

Both the yml and properties editor now provide some basic content assist for configuration properties of type org.springframework.core.io.Resource. Content assist suggestions are generated by scanning your project's source-folders for 'resources'. In a future release we may extend this to do a broader scan to look also for 'resources' in the project's dependencies.

Support for 'class-reference' value provider

Configuration properties with 'value provider' metadata of type 'class-reference' now are handled by both the yml and properties editor. For example property spring.data.mongodb.field-naming-strategy comes with the following metadata attached:

The editor now understands what this means and will suggest names of classes that implement the FieldNamingStrategy interface from the project's classpath.

Support for handle-as value-provider

Handle-as value provider can be used in spring-boot configuration property metadata to designate that a property ostensibly declared as a vanilla type such as String should be treated as something more specific (e.g. org.springframework.core.io.Resource). Both yml and properties editor now understand this metadata.

Check for duplicate keys in yml and properties editor

Both the yml and properties editor now check for duplicate keys and flag them with an error marker:

Better handling of enum values in yml and properties editor

Both yml and properties editor now are able to show the JavaDoc for enum values when hovering over them or in the side-panel of a content-assist suggestion. For example:

Note 1: Hyperlink navigation with 'CTRL-Click' now also works for enum values, taking you to the source-code of the corresponding enum constant.

Note 2:JavaDoc in Eclipse in general, is only available when source-jars have been downloaded and associated with the binary jars. If you do not get JavaDoc hovers where you expect them, verify that source code for the enum in question is attached before reporting this as a bug.

Note 3:There are still cases, especially in the properties editor, where hover-info and/or CTRL-click does not yet work, in particular when the enum-value occurs on the left-hand-side of the '=' of a property-assignment. We plan to resolve these issues in a future release.

Cloud Foundry Manifest YML Editor

Content Assist for Cloud Foundry Buildpacks

Content assist for buildpacks now proposes buildpacks dynamically from Cloud Foundry targets in the Spring Boot Dashboard. It will list buildpacks from any Cloud Foundry target, not just Pivotal Web Services.



Developer Productivity Bits

We implemented a number of little things to improve the general developer productivity when working with the Spring Tool Suite and Eclipse. Here are the little improvements in detail.


Additional code templates

Based on input from Spring Boot Core developers we have created some code templates useful in Java apps in general. Below is a list of the templates that where added as a result:

Name[context] Screenshot
asl
jumock
eerule[test-member]
eerule[test-statement]
formatter-off

Note: The "formatter-off" template is special and can be applied from the "Surround With..." menu:


Toggle Line Number Visibility Action:



Want to rename tests, too?

After you rename a class, STS will check if there is a test class with a similar name. If it finds one, it will ask you if you want to rename that too.

More Defaults for Static Imports in Favorites

Additional default types containing static members have been added to Content Assist for imports, including some from springframework libraries. Users can customize the list through "Favorites" preferences, as well as restore the default list.




Improved Quickfix for Unresolved Types in Assignments

Quickfix on unresolved Java types now matches the return type of an assignment statement.



Java quickfix improvements in STS can be disabled, and the original Eclipse JDT quickfix feature restored, by adding the following VM arg to the STS.ini file and restarting STS:

-Denable.sts.quickfix.imports=false


Miscellaneous

Issues resolved in this release

Here is a full list of resolved bugs and enhancement requests for 3.8.0:

STS issue tracker

Spring IDE issue tracker


Useful Links

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

STS Issue tracker: https://issuetracker.springsource.com/browse/STS


Known issues in this release

macOS Sierra might cause loss of settings and installed plugins

If you unpackage the STS archive on macOS Sierra and use it without moving it to a different location on your drive, macOS Sierra Gatekeeper activates a security feature called "Path Randomization" for the app. This causes the STS.app bundle to be copied to a private and randomized read-only folder on your disc every time you start STS after a restart of your machine. As a result, all your third-party installs are lost as well as your global configuration. As a workaround, please move the STS.app bundle to a different location on your drive before starting it.

The corresponding issue in the STS issue tracker: STS-4406: STS 3.8.2 and MacOS Sierra

The corresponding bug at Eclipse: Bug 507328 - Eclipse forgets about global settings and installed features


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.


Conflicting duplicate lifecycle mapping errors in Maven projects upgrading from STS 3.6.x

Sometimes Maven projects show up with a red error (talking about a duplicate lifecycle mapping conflict) after upgrading STS from 3.6.x to the latest 3.7.2 version. In this case, please update the Maven support for Eclipse/STS to the latest version, as described here: STS-4236.


Error after updating from STS 3.7.0

Sometimes after updating an existing STS 3.7.0 installation to 3.7.1 an error dialog pops up and STS doesn't start. This is a known but not yet solved problem. If you come across this issue, please press "OK" on the dialog and restart STS. It will open up fine, including all the updated components.


No repository available when checking for updates

If you have used a pre-release version of Eclipse Mars or STS, the embedded Eclipse Oomph technology created a cache of p2 repositores in your home directory. This cached p2 data can cause issues when using STS 3.7.0 or Eclipse Mars. The error message looks like STS/Eclipse fails to read information from the main Eclipse Mars p2 repository.

In case you encounter this error, please stop Eclipse/STS, go to your home directory, delete "~/.eclipse/org.eclipse.oomph.p2", and restart Eclipse/STS. The related Eclipse bug is: Bug 470912.


Live configuration-metadata generation requires Spring Boot 1.2.2

Spring Boot 1.2.1 configuration processor does not work correctly when executed from Eclipse's incremental build. This issue is fixed in Spring Boot 1.2.2. This only affects 'live' metadata generated from your own source code, not the metadata that is packaged inside spring-boot jars themselves. So you can still use older versions of Boot, but the 'live metadata' updates will not be accurate. See Spring Boot issue GH-2313 for details.


Dashboard and Retina Displays

When running STS on top of a JDK7, the new dashboard looks a bit blurry when using a HiRes (Retina) display, for example on a Retina MacBook Pro. This is due to the underlying browser technology that is used to display the dashboard content and that is coming from JavaFX. The JavaFX version that ships with JDK7 doesn't support retina displays. The solution for this is to run STS on top of a JDK8 build. The JavaFX version that comes with JDK8 supports retina displays.


Dashboard on JDK9

The JavaFX-based main STS dashboard doesn't work when running STS on top of an early-access version of JDK9. As a workaround run STS on a JDK8 or switch the dashboard back to the old (non-JavaFX-based) version via the preferences.


Silent loss of Functionality on Java 7 or earlier

STS 3.8.0 requires a JDK 8 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.8.0 requires a JDK 8 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.


Issues on Linux (GTK3)

Eclipse 4.5, upon which STS and GGTS are based, is the first Eclipse release where GTK3 is the default for the SWT widget library. There are some issues with this still:

You may also experience other UI rendering glitches. If you exprience any of these problems you can avoid them by forcing SWT to switch back to using GTK2. Just set the environment variable "SWT_GTK3=0" before launching STS or GGTS.


New and Noteworthy for previous releases

STS/GGTS 3.8.1

STS/GGTS 3.8.0

STS/GGTS 3.7.3

STS/GGTS 3.7.2

STS/GGTS 3.7.1

STS/GGTS 3.7.0

STS/GGTS 3.6.4

STS/GGTS 3.6.3.SR1

STS/GGTS 3.6.3

STS/GGTS 3.6.2

STS/GGTS 3.6.1

STS/GGTS 3.6.0

STS/GGTS 3.5.1

STS/GGTS 3.4.0

STS/GGTS 3.3.0

STS/GGTS 3.2.0

STS/GGTS 3.1.0

STS/GGTS 3.0.0

STS 2.9.2

STS 2.8.1

STS 2.7.2

STS 2.6.1.SR1

STS 2.5.2.SR1