Upgrading Arconia

Arconia is currently in active development. We’re working hard to improve it and appreciate your patience as we continue to refine the tool.

We’re moving fast, and the APIs may change frequently, but we’re committed to keeping the documentation up to date and making it easy to upgrade to the latest version.

We maintain an OpenRewrite recipe to help you upgrade your projects to the latest version of Arconia automatically. You can run it with the Arconia CLI, Gradle, or Maven as documented in the Automated Upgrade section below.

If you’d rather upgrade manually, you can follow the instructions in the Manual Upgrade section.

Furthermore, make sure you check the What’s New in Arconia page for the latest features and enhancements and the release notes.

Automated Upgrade

Arconia CLI

Using the Arconia CLI, you can upgrade your project to the latest version of Arconia:

arconia update framework

Optionally, you can provide the --to-version flag to specify the version you want to upgrade to:

arconia update framework --to-version 0.14

Gradle OpenRewrite Plugin

Using the OpenRewrite Gradle Plugin, you can apply the recipe to your project as follows.

First, create an init.gradle file in your Spring Boot project (root folder) with the following content:

initscript {
    repositories {
        maven { url "https://plugins.gradle.org/m2" }
    }
    dependencies {
        classpath("org.openrewrite:plugin:latest.release")
    }
}

rootProject {
    plugins.apply(org.openrewrite.gradle.RewritePlugin)
    dependencies {
        rewrite("io.arconia.migrations:rewrite-arconia:latest.release")
    }

    afterEvaluate {
        if (repositories.isEmpty()) {
            repositories {
                mavenCentral()
            }
        }
    }
}

Then, run the following command:

./gradlew rewriteRun \
    --init-script init.gradle \
    -DactiveRecipe=io.arconia.rewrite.UpgradeArconia_0_14

Finally, you can remove the init.gradle file.

Maven OpenRewrite Plugin

Using the OpenRewrite Maven Plugin, you can apply the recipe to your project as follows:

./mvnw -U org.openrewrite.maven:rewrite-maven-plugin:run \
  -Drewrite.recipeArtifactCoordinates=io.arconia.migrations:rewrite-arconia:LATEST \
  -Drewrite.activeRecipes=io.arconia.rewrite.UpgradeArconia_0_14

Manual Upgrade

Dev Services

  • The arconia-dev-services-connections module has been removed and its content moved to the arconia-opentelemetry module. As part of this change, the classes contained in the io.arconia.dev.services.connections package have been moved to the io.arconia.opentelemetry.testcontainers package.

  • The MariaDBDevServicesAutoConfiguration class has been renamed to MariaDbDevServicesAutoConfiguration to match the Arconia naming conventions.

  • The RabbitMQDevServicesAutoConfiguration class has been renamed to RabbitMqDevServicesAutoConfiguration to match the Arconia naming conventions.

Multitenancy

  • The arconia-multitenancy-spring-boot-autoconfigure module has been removed and its content moved to the arconia-multitenancy-core and arconia-multitenancy-web modules. As part of this change, the classes contained in the io.arconia.multitenancy.autoconfigure.core package have been moved to the io.arconia.multitenancy.core.autoconfigure package whereas the classes contained in the io.arconia.multitenancy.autoconfigure.web package have been moved to the io.arconia.multitenancy.web.autoconfigure package.

OpenTelemetry

  • The arconia-opentelemetry-sdk-spring-boot-autoconfigure module has been removed and its content moved to the arconia-opentelemetry module. As part of this change, the classes contained in the io.arconia.opentelemetry.autoconfigure.sdk package have been moved to the io.arconia.opentelemetry.autoconfigure package.

Resource

  • The arconia-opentelemetry-sdk-spring-boot-autoconfigure module (now removed) provided additional ResourceContributor beans that contributed the experimental container.id and host.id attributes to the OpenTelemetry Resource. The experimental attributes have been removed as well as the related auto-configuration classes and configuration properties (arconia.otel.instrumentation.resource.*). You can restore the previous behaviour by including the io.opentelemetry.instrumentation:opentelemetry-resources dependency in your project and defining custom ResourceContributor beans populating these attributes from the ContainerResource and HostIdResource classes (in the io.opentelemetry.instrumentation.resources package).

Bridges

  • The arconia-opentelemetry-instrumentation-spring-boot-autoconfigure module has been removed. The Logback OpenTelemetry Bridge instrumentation is now included in the arconia-opentelemetry-logback-bridge module whereas the Micrometer Metrics OpenTelemetry Bridge instrumentation is now included in the arconia-opentelemetry-micrometer-metrics-bridge modules. As part of this change, the logic contained in the io.arconia.opentelemetry.autoconfigure.instrumentation.logback package has been moved to the io.arconia.opentelemetry.logback.autoconfigure package whereas the logic contained in the io.arconia.opentelemetry.autoconfigure.instrumentation.micrometer package has been moved to the io.arconia.opentelemetry.micrometer.metrics.autoconfigure package.

  • The configuration properties for the Logback OpenTelemetry Bridge have been moved from the arconia.otel.instrumentation.logback-appender group to the arconia.otel.logs.logback-bridge group.

  • The configuration properties for the Micrometer Metrics OpenTelemetry Bridge have been moved from the arconia.otel.instrumentation.micrometer group to the arconia.otel.metrics.micrometer-bridge group.

Logs

  • The arconia.otel.logs.logs-limits configuration property group has been renamed to arconia.otel.logs.limits.

Metrics

  • The arconia.otel.metrics.exemplar-filter configuration property has been renamed to arconia.otel.metrics.exemplars.filter.

  • The arconia.otel.metrics.interval configuration property has been renamed to arconia.otel.metrics.exporter.interval.

Traces

  • The arconia.otel.traces.span-limits configuration property has been renamed to arconia.otel.traces.limits.

Compatibility

  • Support for the OpenTelemetry Environment Variable Specification has been improved. As part of this process, support of the special/experimental properties used by the OpenTelemetry Spring Boot Starter on top of the standard environment variables has been removed.

  • Support for the Spring Boot OTLP/Actuator configuration properties (which could previously be enabled by setting the arconia.otel.compatibility.actuator property) has been removed. In its place, an automated migration recipe is available to help you migrate to the Arconia OpenTelemetry configuration properties. See the dedicated migration guide for more details.

Spring Boot

  • The arconia-spring-boot-autoconfigure module has been removed and its content moved to the arconia-spring-boot module.