Skip to content
Draft
11 changes: 11 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ collections:
versions:
output: true
permalink: /version/:path
migrations:
output: true
permalink: /migration-guides/:version

# Exclude from processing.
# The following items will not be processed, by default. Create a custom list
Expand Down Expand Up @@ -122,6 +125,14 @@ defaults:
type: "posts"
values:
permalink: /blog/:title/
-
scope:
type: "migrations"
values:
layout: migration-guide
toc: true
version_regex: "Migration-Guide-"
# permalink needs be defined above, with the collection definition
-
scope:
type: redirects
Expand Down
83 changes: 83 additions & 0 deletions _layouts/migration-guide.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
layout: base
---
{% assign versioned_page = page.url | startswith: '/version/' %}
{% if versioned_page %}
{% assign docversion = page.url | replace_regex: '^/version/([^/]+)/.*', '\1' %}
{% else %}
{% assign docversion = 'latest' %}
{% endif %}
{% assign docversion_index = docversion | replace: '.', '-' %}
{% comment %}
'page.path' pattern is different depending on the version
- "Main - SNAPSHOT" -> _versions/main/guides/*.adoc
- "x.x.x - Latest" -> _guides/*.adoc
=> to extract the page filename you need two different replacement tokens
{% endcomment %}
{% assign page_filename = page.path | replace: '_migrations/', '' %}
{% assign relations = site.data.versioned[docversion_index].index.relations %}
{% assign guide_url = page.url | replace_regex: '^/version/[^/]+(/.*)', '\1' %}

<section class="full-width-version-bg flexfilterbar guides">
<div class="guideflexcontainer">
<div class="docslink">
<a class="returnlink" href="{{site.baseurl}}/migration-guides/"> Back to Migration Guides</a>
</div>
</div>
</section>

<div class="guide">
<div class="grid-wrapper">
<div class="grid__item width-8-12 width-12-12-m">
{% if docversion == 'latest' or docversion == 'main' %}
<a class="editlink" href="https://github.com/quarkusio/quarkusio.github.io/edit/main/_migrations/{{ page_filename }}">{{site.data.guides.texts.edit_this_page}}</a>
{% endif %}
<h1 class="text-caps">{{page.title}} {{page.docversion}}</h1>
{{ content }}
</div>
<div class="grid__item width-4-12 width-12-12-m tocwrapper">
<div class="hide-mobile toc">{{ page.document | tocify_asciidoc }}</div>
</div>
</div>
{% if relations and relations[guide_url] -%}
<h2>{{site.data.guides.texts.related_content}}</h2>
<div class="grid-wrapper relations">
{% if relations[guide_url].sameExtensions -%}
<div class="grid__item width-6-12 width-12-12-m">
<h3>{{site.data.guides.texts.on_the_same_extensions}}</h3>
<ul class="related-content">
{% for guide in relations[guide_url].sameExtensions -%}
{% assign is_external_guide = guide.url | startswith: 'http' %}
{% if is_external_guide %}
{% assign related_guide_url = include.url %}
{% elsif docversion == 'latest' %}
{% assign related_guide_url = site.baseurl | append: guide.url %}
{% else %}
{% assign related_guide_url = site.baseurl | append: '/version/' | append: docversion | append: guide.url %}
{% endif %}
<li class="{{ guide.type }}"><a href="{{ related_guide_url }}">{{ guide.title }}</a></li>
{% endfor -%}
</ul>
</div>
{% endif -%}
{% if relations[guide_url].sameTopics -%}
<div class="grid__item width-6-12 width-12-12-m">
<h3>{{site.data.guides.texts.on_the_same_topics}}</h3>
<ul class="related-content">
{% for guide in relations[guide_url].sameTopics limit:20 -%}
{% assign is_external_guide = guide.url | startswith: 'http' %}
{% if is_external_guide %}
{% assign related_guide_url = include.url %}
{% elsif docversion == 'latest' %}
{% assign related_guide_url = site.baseurl | append: guide.url %}
{% else %}
{% assign related_guide_url = site.baseurl | append: '/version/' | append: docversion | append: guide.url %}
{% endif %}
<li class="{{ guide.type }}"><a href="{{ related_guide_url }}">{{ guide.title }}</a></li>
{% endfor -%}
</ul>
</div>
{% endif -%}
</div>
{% endif -%}
</div>
98 changes: 98 additions & 0 deletions _migrations/Migration-Guide-1.1.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
date: 2019-12-23
---
## Hibernate Search + Elasticsearch (Preview)

`quarkus.hibernate-search.elasticsearch.automatic-indexing.synchronization.strategy` has been renamed to `quarkus.hibernate-search.automatic-indexing.synchronization.strategy`.

If you are using our Hibernate Search + Elasticsearch extension, there's a good chance you will need to adjust your configuration.

## Neo4j (Preview)

The Neo4j driver was updated to the Final 4.0 version and they have renamed a few classes, most notably `org.neo4j.driver.reactive.RxResult.RxStatementResult` has been renamed to `org.neo4j.driver.reactive.RxResult`.

## Gradle plugin

We now recommend using Gradle 6.0.1+. Starting from this version the Gradle plugin is no longer deployed in Maven Central, therefore some minor changes in your Gradle project might be needed.

### Changes in the `settings.gradle` file

Let's start by changing the `settings.gradle` file. It should be changed from (`rootProject.name` value may vary depending on your project name):

```gradle
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == 'io.quarkus') {
useModule("io.quarkus:quarkus-gradle-plugin:1.0.1.Final")
}
}
}
}

rootProject.name='my-project'
```
to:
```gradle
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
plugins {
id 'io.quarkus' version "${quarkusPluginVersion}"
}
}
rootProject.name='my-project'
```

NOTE: the `plugins{}` method is not supported in Gradle 5.x. In this case make sure to explicitly declare the plugin version in the `build.gradle` file.

### Changes in the `build.gradle` file

Change your `build.gradle` file to use the plugin DSL format, from:

```gradle
// this block is necessary to make enforcedPlatform work for Quarkus plugin available
// only locally (snapshot) that is also importing the Quarkus BOM
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath "io.quarkus:quarkus-gradle-plugin:${quarkusPluginVersion}"
}
}

plugins {
id 'java'
}

apply plugin: 'io.quarkus'
```
to:
```gradle
plugins {
id 'java'
id 'io.quarkus'
}

```

## Extension framework

### Updated configuration framework

Our configuration framework got a big update to fix a number of issues all around.

The main consequence of this change is that you will need to mark optional collections and maps as `Optional` in your config classes (that means `Optional<List<String>>` for instance).

### GizmoAdaptor

The `GizmoAdaptor` class has been renamed to `GeneratedClassGizmoAdaptor`, due to the introduction of `GeneratedBeanGizmoAdaptor`.
17 changes: 17 additions & 0 deletions _migrations/Migration-Guide-1.10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
date: 2020-10-25
---
## Hibernate ORM

* `quarkus.hibernate-orm.log.bind-param` is deprecated and has been renamed `quarkus.hibernate-orm.log.bind-parameters`. The former will be removed at a later stage.

## Hibernate Search ORM + Elasticsearch (Preview)

* You should update your Maven/Gradle dependencies: replace any occurrence of the artifact ID `hibernate-search-elasticsearch` with `hibernate-search-orm-elasticsearch`
* You should update your configuration: replace any occurrence of the prefix `quarkus.hibernate-search.` with `quarkus.hibernate-search-orm.
* Many deprecated methods and classes were removed. For more information: https://in.relation.to/2020/11/04/hibernate-search-6-0-0-CR1/#breaking_changes
* Async/reactive methods now return `CompletionStage` instead of `CompletableFuture`. To convert a `CompletionStage` to a `Future`, call `.toCompletableFuture()`.`

## MongoDB

* The name of the default client is now `<default>` instead of the previous `__default__` to be more consistent with the rest of the code base. It shouldn't have too many consequences but typically the health checks now expose the new name.
58 changes: 58 additions & 0 deletions _migrations/Migration-Guide-1.11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
date: 2021-01-20
---
## Log min-level

If you are using TRACE (or DEBUG too if using 1.11.0.Final or 1.11.1.Final - changed in 1.11.2.Final) log level, we made an important change in our logging layer: a new build-time `min-level` configuration property was introduced that sets the minimum log level you will be able to use at runtime.

So if you are logging at TRACE level for some loggers, setting `min-level` to TRACE is required.

## Non-application endpoints moved to their own namespace

[Path resolution for configurable endpoints](https://quarkus.io/blog/path-resolution-in-quarkus/) changed in this release. This transition was a little rough. There are some differences in behavior between 1.11.0.Final, when this was introduced, and 1.11.5.Final, when issues were resolved.

By default, non-application endpoints, like health and metrics, are now grouped under `/q`.

Convenience redirects from previous URLs to new namespaced URLs can be enabled and disabled by setting:
`quarkus.http.redirect-to-non-application-root-path=false`

Disable the Quarkus non-application endpoints by setting the non-application endpoint root to be the same as the http root:
`quarkus.http.non-application-root-path=${quarkus.http.root-path}`

You can customize the root used for non-application endpoints by setting `quarkus.http.non-application-root-path` to an alternative path.

As of 1.11.5.Final, leading slashes in configured paths are significant. Please see [Path resolution in Quarkus](https://quarkus.io/blog/path-resolution-in-quarkus/) for more details and examples.

## Jackson

The default `ObjectMapper` obtained via CDI and consumed by the Quarkus extensions now ignores unknown properties (by disabling the `DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES` feature).

See https://quarkus.io/guides/rest-json#jackson for more details about how to go back to the previous behavior.

## Kubernetes Client

We upgraded the Kubernetes Client to version 5. Please refer to the [Kubernetes Client migration guide](https://github.com/fabric8io/kubernetes-client/blob/master/doc/MIGRATION-v5.md) for more information.

## Hibernate Search ORM + Elasticsearch

* The default required status for Elasticsearch indexes is now `yellow`. If you have specific requirements and need to wait for indexes to be `green` on startup, set `quarkus.hibernate-search.elasticsearch.schema-management.required-status` to `green`.
* [Queries](https://docs.jboss.org/hibernate/search/6.0/reference/en-US/html_single/#troubleshooting-logging-query)
and [requests](https://docs.jboss.org/hibernate/search/6.0/reference/en-US/html_single/#troubleshooting-logging-elasticsearch-request)
are now logged at the `TRACE` level instead of the `DEBUG` level.

## MongoDB Panache

* A recent change was made to MongoDB panache to bring it in to conformity with the Hibernate Panache behavior. Public field accesses on `MongoEntity` and `ReactiveMongoEntity` types are now wrapped with the appropriate `get` or `set` methods. In general, you will like not see any difference in your application. However, if you have written a custom `get` or `set` method you may notice a change in behavior if those custom methods deviate from the standard `get`/`set` paradigm. See [this issue](https://github.com/quarkusio/quarkus-quickstarts/pull/726) for an example of something you might run in to.

## quarkus-smallrye-jwt-build

A new `quarkus-smallrye-jwt-build` extension has been introduced allowing users to generate JWT tokens without having to depend on `quarkus-smallrye-jwt` extension which is used for verifying JWT tokens.

## GraalVM 20.3

We upgraded the base container image to build native executables to GraalVM 20.3.

However, we hit a regression in the ImageIO support so if you are using ImageIO and seeing errors such as `UnsatisfiedLinkError: no awt in java.library.path`. This regression is specific to GraalVM 20.3.0 and will be fixed in GraalVM 20.3.1. Your options are:

* Go back to GraalVM 20.2 until we upgrade to GraalVM 20.3.1: `quarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-native-image:20.2.0-java11`
* Use [Mandrel](https://github.com/graalvm/mandrel/releases) in which we backported some additional ImageIO support from GraalVM master: `quarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:20.3-java11`
Loading