Spring Boot Migrator (SBM) - a tool for automated code migrations to upgrade or migrate to Spring Boot

Overview

Spring Boot Migrator (SBM)

Spring Boot Migrator (SBM) aims to help developers upgrade or migrate to [Spring Boot](https://spring.io/projects/spring-boot) by providing recipes for automated migrations.

How SBM works

Spring Boot Migrator uses and is compatible to OpenRewrite, a powerful mass refactoring ecosystem for Java and other source code.

Spring Boot Migrator offers a CLI to run recipes to migrate or upgrade a given application to Spring Boot. For developing new and custom recipes, SBM provides an opinionated API compatible with [OpenRewrite](https://docs.openrewrite.org/) recipes and a set of specialized resource representations to simplify recipe development for Spring Boot.

Scan application

A given codebase is scanned and a set of recipes gets evaluated against the codebase.

scan

Apply a recipe

The list of applicable recipes is displayed and recipes can be selected from the list to be run against the codebase.
The recipes either apply automated migrations or guide users on their migration journey.

apply

Getting started

  • Download the latest release from here: Spring Boot Migrator Releases

  • Start the application: java -jar spring-boot-migrator.jar

  • In the CLI start by scanning the application scan

  • From the list of applicable recipes select the one you want to apply,
    e.g.: apply initialize-spring-boot-migration
    Spring Boot Migrator will now apply the migrations defined in the recipe to the codebase.

  • To get help when using SBM use the help command

Warning
The OpenRewrite rewrite-java-11 module uses JDK internals and thus requires the project to run with JDK 11.

Building from source

  • Clone the repository

  • Change into root dir

  • Run mvn clean install

  • Find the jar in applications/spring-shell/spring-boot-migrator.jar

Warning
Some integration tests use Docker so you’ll need Docker to run them.
You can pass the -DskipTests flag to the mvn command to ignore tests.

Documentation

Contributing

If you have not previously done so, please sign the Contributor License Agreement. You will be reminded automatically when you submit the pull request.

All contributions are welcome.

Please refer to the CONTRIBUTING.adoc for more details.

This project requires Java 11.

Comments
  • 3.0.0-M5: JMX Endpoint Exposure

    3.0.0-M5: JMX Endpoint Exposure

    From the Release Notes

    By default, only the health endpoint is now exposed over JMX, to align with the default web endpoint exposure. This can be changed by configuring the management.endpoints.jmx.exposure.include and management.endpoints.jmx.exposure.exclude properties.

    What needs to be done

    To guarantee that JMX endpoint exposure is exactly the same as prior to 3.0 the settings in 2.7 should be restored and the user should be warned about the implications and how to secure JMX endpoints.

    Report

    Condition

    Application is a Spring Boot 3.0.0 application and management.endpoints.jmx.exposure.include is not set.

    Section

    By default, only the health endpoint is now exposed over JMX, to align with the default web endpoint exposure. This can be changed by configuring the management.endpoints.jmx.exposure.include and management.endpoints.jmx.exposure.exclude properties. As Spring Boot Migrator can't tell if the JMX endpoints provided in 2.7 are used, the recipe will restore the defaults as in 2.7 by setting management.endpoints.jmx.exposure.include=*. This exposes all management endpoints over JMX. To provide only required information over JMX we strongly recommend to configure the management.endpoints.jmx.exposure.include property to your specific needs and only expose required JMX endpoints. Please consult the reference documentation Spring Boot 3.0.0-M5 or after 3.0.0 is GA: Spring Boot 3.0.0

    Recipe

    Condition

    Application is a Spring Boot 3.0.0 application and management.endpoints.jmx.exposure.include is not set.

    Action

    • [ ] Set management.endpoints.jmx.exposure.include=* in application.properties
    type: enhancement good first issue upgrade:boot-recipe 3.0.0 upgrade:boot-report 
    opened by fabapp2 16
  • 3.0.0-M3 Logging Date Format

    3.0.0-M3 Logging Date Format

    The default format for the date and time component of log messages for Logback and Log4j2 has changed to align with the ISO-8601 standard. The new default format yyyy-MM-dd’T’HH:mm:ss.SSSXXX uses a T to separate the date and time instead of a space character and adds the timezone offset to the end. The LOG_DATEFORMAT_PATTERN environment variable or logging.pattern.dateformat property can be used to restore the previous default value of yyyy-MM-dd HH:mm:ss.SSS.

    What needs to be done

    Finder

    Finds if logging.pattern.dateformat is set

    Recipe

    Set logging.pattern.dateformat=yyyy-MM-dd HH:mm:ss.SSS if this property is not currently set.

    Report

    Informs user about the change and how to reset it and why this is a good idea

    upgrade:boot-recipe 3.0.0 
    opened by fabapp2 13
  • Fix some trivial issues learned on real project

    Fix some trivial issues learned on real project

    We are currently evaluating using spring-boot-migrator on our legacy applications and encountering some trivial exceptions. Hope this pull request helps make this project more robust.

    type: enhancement 
    opened by tan9 11
  • Merge scopes when adding a dependency that exists but with different scope

    Merge scopes when adding a dependency that exists but with different scope

    Currently, the implementation will add a dependency with compile scope when the same dependency already exists with test scope. It should merge these dependencies and set the state accordingly (or throw exception?)

    Originally posted by @fabapp2 in https://github.com/spring-projects-experimental/spring-boot-migrator/issues/309#issuecomment-1262845641

    type: enhancement in: engine 
    opened by fabapp2 11
  • 3.0.0-M1 JSON-B

    3.0.0-M1 JSON-B

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M1-Release-Notes#json-b

    What needs to be done

    Dependency management for Apache Johnzon has been removed in favor of Eclipse Yasson. A Jakarta EE 9-compatible version of Apache Johnzon can be used with Spring Boot 3, but you will now have to specify a version in your dependency declaration.

    if dependency to Johnzon found on classpath...

    1. if the version is managed by Spring Boot 1.1 replace it with org.apache.johnzon:johnzon-core:1.2.18:jakarta 2 if the version is NOT managed by Spring Boot (declared) 2.1 replace it with org.apache.johnzon:johnzon-core:1.2.18:jakarta
    • [ ] Implement an Action with the described steps
    • [ ] Write a test using TestProjectContext for this Action
    • [x] Find out what 'compatible' means, which version of Johnzon is used in Boot 2.7 and for which version of Johnzon a new Jakarta Compatible version exists
    • [ ] Implement the replacement
    type: enhancement good first issue upgrade:boot-recipe 3.0.0 
    opened by fabapp2 10
  • Add support for generating code to send MuleSoft Dataweave Transformations to TriggerMesh

    Add support for generating code to send MuleSoft Dataweave Transformations to TriggerMesh

    I introduced a new runtime flag for spring-boot-migrator called sbm.muleTriggerMeshTransformEnabled that will modify the generated mule-to-boot recipe for handling DataWeave transformations to stream the transformation to TriggerMesh's Dataweave Transformer.

    The generated code works best when the service runs inside a Kubernetes cluster leveraging Knative's Sink Binding to associate the the newly migrated service to the TriggerMesh Dataweave transformation, however the service can run on it's own by setting the K_SINK environment variable to the exposed transformation service.

    I created a gist to demonstrate what an integration within TriggerMesh would look like.

    type: enhancement in: mule-3.9 
    opened by cab105 9
  • Version for spring-boot-maven-plugin must be set when Boot dependencies are added by

    Version for spring-boot-maven-plugin must be set when Boot dependencies are added by

    Describe the bug The recipe initialize-spring-boot-migration must set the version for the spring-boot-maven-plugin to the current Spring Boot version.

    To Reproduce Run the recipe against a non-Spring application. spring-boot-maven-plugin has no version.

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    ...
               </plugin>    
    

    Expected behavior The version for spring-boot-maven-plugin should be explicitly set to the Spring Boot version used.

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
               </plugin>    
    

    Additional context When Spring Boot dependencies are imported using a dependencyManagement section instead of parent pom the version of plugins is not managed and must be explicitly set

    reported-by: @andreasf

    type: bug good first issue 
    opened by fabapp2 6
  • 3.0.0-M2 Improved @ConstructorBinding Detection

    3.0.0-M2 Improved @ConstructorBinding Detection

    What needs to be done

    Implement the required migration

    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M2-Release-Notes#improved-constructorbinding-detection

    Example code (to discuss)

    Ideal translation

    TestCase 1

    Given: the Spring Boot 2 has Configuration property file annotated with @ConstructorBinding and has only single constructor Expected: the @ConstructorBinding annotation is removed for SpringBoot 3.0.X (it is not necessary anymore)

    Acceptance criterias

    Report Given: class annotated with ... When: recipe is applied.. Then: ....

    Recipe Given: class annotated with ... When: recipe is applied.. Then: ....

    Initial code:

    @ConfigurationProperties(prefix = "mail")
    @ConstructorBinding
    public class ConfigProperties {
        private String hostName;
        private int port;
        private String from;
    
        public ConfigProperties(String hostName, int port, String from) {
            this.hostName = hostName;
            this.port = port;
            this.from = from;
        }
    
    
        public String getHostName() {
            return hostName;
        }
    
        public int getPort() {
            return port;
        }
    
        public String getFrom() {
            return from;
        }
    }
    

    Transformed code for SpringBoot 3.0.X:

    @ConfigurationProperties(prefix = "mail")
    public class ConfigProperties {
        private String hostName;
        private int port;
        private String from;
    
        public ConfigProperties(String hostName, int port, String from) {
            this.hostName = hostName;
            this.port = port;
            this.from = from;
        }
    
    
        public String getHostName() {
            return hostName;
        }
    
        public int getPort() {
            return port;
        }
    
        public String getFrom() {
            return from;
        }
    }
    

    case 2

    upgrade:boot-recipe 
    opened by fabapp2 6
  • migrator does not honor Maven settings.xml

    migrator does not honor Maven settings.xml

    Describe the bug

    When scanning an application in a corporate environment including internet proxy and internal Maven Repository mirrors definend in a Maven setttings.xml, the scan step fails:

    migrator:> scan ./myrepo
    
    scanning './myrepo'
    
    Checked preconditions for 'C:\Users\michael.prankl\git\myrepo'
    [ok] Found pom.xml.
    [ok] 'sbm.gitSupportEnabled' is 'true', changes will be committed to branch [spring-boot-3] after each recipe.
    [ok] Required Java version (17) was found.
    [ok] Found required source dir 'src/main/java'.
    
    
    Maven         14% ?????                       ? 1/7 (0:00:00 / 0:00:00) Unable to download dependency org.springframework.boot:spring-boot-starter-parent:2.7.6 from the following repositories :
      - file:/C:/Users/michael.prankl/.m2/repository/
      - https://repo.maven.apache.org/maven2
    Details of the error have been omitted. You can use the stacktrace command to print the full stacktrace.
    

    To Reproduce Steps to reproduce the behavior:

    1. Define a settings.xml containing proxy or mirror:
    <settings
        xmlns="http://maven.apache.org/SETTINGS/1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    
    	<proxies>
    		<proxy>
    			<id>my-proxy</id>
    			<active>true</active>
    			<protocol>http</protocol>
    			<host>my-corporate-proxy-host</host>
    			<port>80</port>
    		</proxy>
    	</proxies>
    
    </settings>
    
    1. run the scan

    Expected behavior

    The migrator should honor user specific maven settings defined in ~/.m2/settings.xml, and therefore Maven should use the defined proxy for downlodas.

    Screenshots

    n/a

    Stacktrace

    org.openrewrite.maven.internal.MavenDownloadingException: Unable to download dependency org.springframework.boot:spring-boot-starter-parent:2.7.6 from the following repositories :
      - file:/C:/Users/michael.prankl/.m2/repository/
      - https://repo.maven.apache.org/maven2
            at org.openrewrite.maven.internal.MavenPomDownloader.download(MavenPomDownloader.java:311)
            at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentPropertiesAndRepositoriesRecursively(ResolvedPom.java:351)
            at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentPropertiesAndRepositoriesRecursively(ResolvedPom.java:362)
            at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolveParentsRecursively(ResolvedPom.java:308)
            at org.openrewrite.maven.tree.ResolvedPom$Resolver.resolve(ResolvedPom.java:297)
            at org.openrewrite.maven.tree.ResolvedPom.resolve(ResolvedPom.java:142)
            at org.openrewrite.maven.tree.Pom.resolve(Pom.java:92)
            at org.openrewrite.maven.MavenParser.parseInputs(MavenParser.java:113)
            at org.springframework.sbm.build.impl.RewriteMavenParser.parseInputs(RewriteMavenParser.java:71)
            at org.springframework.sbm.project.parser.MavenProjectParser.parse(MavenProjectParser.java:102)
            at org.springframework.sbm.project.parser.ProjectContextInitializer.initProjectContext(ProjectContextInitializer.java:54)
            at org.springframework.sbm.engine.commands.ScanCommand.execute(ScanCommand.java:57)
            at org.springframework.sbm.shell.ScanShellCommand.scan(ScanShellCommand.java:70)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:568)
            at org.springframework.shell.command.invocation.InvocableShellMethod.doInvoke(InvocableShellMethod.java:306)
            at org.springframework.shell.command.invocation.InvocableShellMethod.invoke(InvocableShellMethod.java:232)
            at org.springframework.shell.command.CommandExecution$DefaultCommandExecution.evaluate(CommandExecution.java:158)
            at org.springframework.shell.Shell.evaluate(Shell.java:208)
            at org.springframework.shell.Shell.run(Shell.java:140)
            at org.springframework.shell.jline.InteractiveShellRunner.run(InteractiveShellRunner.java:73)
            at org.springframework.shell.DefaultShellApplicationRunner.run(DefaultShellApplicationRunner.java:65)
            at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:762)
            at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
            at org.springframework.sbm.SpringShellApplication.main(SpringShellApplication.java:27)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:568)
            at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
            at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
    

    Desktop (please complete the following information):

    • OS: Windows
    • Version: 21H2
    type: bug 
    opened by eidottermihi 5
  • Considering using a more inclusive emoji for the manual recipes

    Considering using a more inclusive emoji for the manual recipes

    What needs to be done

    Change the emoji

    Why it needs to be done

    so persons that use this experimental project are more encouraged to do the not-automated recipes, regardless of their number of arms 0️⃣1️⃣2️⃣, prosthetic or not 🦾, the color of their skin and how much muscle they have.


    Acceptance Criteria

    /info panel Given precondition When action Then result

    Additional Information

    opened by RUBenGAMArrarodRiguEZ-ToMtOm 5
  • Refactor: Remove `addDefaultPropertiesFileToTopModules` flag

    Refactor: Remove `addDefaultPropertiesFileToTopModules` flag

    What needs to be done

    Replace the addDefaultPropertiesFileToTopModules flag in AddSpringBootApplicationPropertiesAction with

    if(context.getApplicationModules().isSingleModuleApplication()) {
      context.getApplicationModules()
                        .getRootModule()
                        ...
    } else {
      context.getApplicationModules()
                        .getTopmostApplicationModules()
                        .stream()
                        .forEach(this::apply);
    }
    
    opened by fabapp2 5
  • build(deps-dev): bump htmlunit from 2.67.0 to 2.69.0

    build(deps-dev): bump htmlunit from 2.67.0 to 2.69.0

    Bumps htmlunit from 2.67.0 to 2.69.0.

    Release notes

    Sourced from htmlunit's releases.

    HtmlUnit 2.69.0

    • Xerces detection fixed.
    • HtmlUnit is now regulary tested by Google OSS-Fuzz
    • various problems found by oss-fuzz fixed
    • scope fixed for bound functions called inside Promise.then()
    • various fixes for history.replaceState() / history.pushState()

    Please have a look at the full release notes for details about this release.

    💕 Thank you to all who have contributed and to the sponsors (more sponsoring is welcome https://github.com/sponsors/rbri).

    HtmlUnit 2.68.0

    • Chrome/Edge 108
    • Firefox 108
    • neko-html no longer requires xerces
    • javascript constructor properties are writable
    • many more Bugfixes & Enhancements

    Please have a look at the full release notes for details about this release.

    💕 Thank you to all who have contributed and to the sponsors (more sponsoring is welcome https://github.com/sponsors/rbri).

    Commits
    • 9de1dba prepare 2.69.0
    • 7927734 use 2.69.0 releases
    • 5bfe215 code style
    • d5dc774 first set of fuzz tests and some fixes already
    • 2c514de cleanup
    • b230e4a document changes
    • b462945 document last changes and use latest core-js
    • d5296d8 fixes
    • 1b44209 the url was not encoded by history.replaceState() / history.pushState() (issu...
    • 2dc61bc use the same method for hash encoding
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    type: dependency-upgrade 
    opened by dependabot[bot] 0
  • build(deps): bump spring-boot.version from 2.7.5 to 3.0.1

    build(deps): bump spring-boot.version from 2.7.5 to 3.0.1

    Bumps spring-boot.version from 2.7.5 to 3.0.1. Updates spring-boot-dependencies from 2.7.5 to 3.0.1

    Release notes

    Sourced from spring-boot-dependencies's releases.

    v3.0.1

    :lady_beetle: Bug Fixes

    • Fix typo in LocalDevToolsAutoConfiguration logging #33615
    • No warning is given when <springProfile> is used in a Logback <root> block #33610
    • Auto-configure PropagationWebGraphQlInterceptor for tracing propagation #33542
    • WebClient instrumentation fails with IllegalArgumentException when adapting to WebClientExchangeTagsProvider #33483
    • Reactive observation auto-configuration does not declare order for WebFilter #33444
    • Web server fails to start due to "Resource location must not be null" when attempting to use a PKCS 11 KeyStore #33433
    • Actuator health endpoint for neo4j throws NoSuchElementException and always returns Status.DOWN #33428
    • Anchors in YAML configuration files throw UnsupportedOperationException #33404
    • ZipkinRestTemplateSender is not customizable #33399
    • AOT doesn't work with Logstash Logback Encoder #33387
    • Maven process-aot goal fails when release version is set in Maven compiler plugin #33382
    • DependsOnDatabaseInitializationPostProcessor re-declares bean dependencies at native image runtime #33374
    • @SpringBootTest now throws a NullPointerException rather than a helpful IllegalStateException when @SpringBootConfiguration is not found #33371
    • bootBuildImage always trys to create a native image due to bootJar always adding a META-INF/native-image/argfile to the jar #33363

    :notebook_with_decorative_cover: Documentation

    • Improve gradle plugin tags documentation #33617
    • Improve maven plugin tags documentation #33616
    • Fix typo in tomcat accesslog checkExists doc #33512
    • Documented Java compiler level is wrong #33505
    • Fix typo in documentation #33453
    • Update instead of replace environment in bootBuildImage documentation #33424
    • Update the reference docs to document the need to declare the native-maven-plugin when using buildpacks to create a native image #33422
    • Document that the shutdown endpoint is not intended for use when deploying a war to a servlet container #33410
    • Reinstate GraphQL testing documentaion #33407
    • Description of NEVER in Sanitize Sensitive Values isn't formatted correctly #33398

    :hammer: Dependency Upgrades

    • Upgrade to AspectJ 1.9.19 #33586
    • Upgrade to Byte Buddy 1.12.20 #33587
    • Upgrade to Couchbase Client 3.4.1 #33588
    • Upgrade to Dropwizard Metrics 4.2.14 #33589
    • Upgrade to Elasticsearch Client 8.5.3 #33590
    • Upgrade to Hibernate 6.1.6.Final #33591
    • Upgrade to HttpClient 4.5.14 #33592
    • Upgrade to HttpCore 4.4.16 #33593
    • Upgrade to Infinispan 14.0.4.Final #33594
    • Upgrade to Jaybird 4.0.8.java11 #33595
    • Upgrade to Jetty 11.0.13 #33596
    • Upgrade to jOOQ 3.17.6 #33597
    • Upgrade to Kotlin 1.7.22 #33598
    • Upgrade to Lettuce 6.2.2.RELEASE #33599
    • Upgrade to MongoDB 4.8.1 #33600
    • Upgrade to MSSQL JDBC 11.2.2.jre17 #33601
    • Upgrade to Native Build Tools Plugin 0.9.19 #33602

    ... (truncated)

    Commits
    • 837947c Release v3.0.1
    • 5929d95 Merge branch '2.7.x'
    • b10b788 Next development version (v2.7.8-SNAPSHOT)
    • f588793 Update copyright year of changed files
    • 0254619 Merge branch '2.7.x'
    • e4772cf Update copyright year of changed files
    • 2e7ca6f Warning if <springProfile> is used in phase 2 model elements
    • 2ed512d Use model.deepMarkAsSkipped in SpringProfileModelHandler
    • 532fed3 Increase couchbase connection timeout for tests
    • 9562a2c Merge branch '2.7.x'
    • Additional commits viewable in compare view

    Updates spring-boot-starter-test from 2.7.5 to 3.0.1

    Release notes

    Sourced from spring-boot-starter-test's releases.

    v3.0.1

    :lady_beetle: Bug Fixes

    • Fix typo in LocalDevToolsAutoConfiguration logging #33615
    • No warning is given when <springProfile> is used in a Logback <root> block #33610
    • Auto-configure PropagationWebGraphQlInterceptor for tracing propagation #33542
    • WebClient instrumentation fails with IllegalArgumentException when adapting to WebClientExchangeTagsProvider #33483
    • Reactive observation auto-configuration does not declare order for WebFilter #33444
    • Web server fails to start due to "Resource location must not be null" when attempting to use a PKCS 11 KeyStore #33433
    • Actuator health endpoint for neo4j throws NoSuchElementException and always returns Status.DOWN #33428
    • Anchors in YAML configuration files throw UnsupportedOperationException #33404
    • ZipkinRestTemplateSender is not customizable #33399
    • AOT doesn't work with Logstash Logback Encoder #33387
    • Maven process-aot goal fails when release version is set in Maven compiler plugin #33382
    • DependsOnDatabaseInitializationPostProcessor re-declares bean dependencies at native image runtime #33374
    • @SpringBootTest now throws a NullPointerException rather than a helpful IllegalStateException when @SpringBootConfiguration is not found #33371
    • bootBuildImage always trys to create a native image due to bootJar always adding a META-INF/native-image/argfile to the jar #33363

    :notebook_with_decorative_cover: Documentation

    • Improve gradle plugin tags documentation #33617
    • Improve maven plugin tags documentation #33616
    • Fix typo in tomcat accesslog checkExists doc #33512
    • Documented Java compiler level is wrong #33505
    • Fix typo in documentation #33453
    • Update instead of replace environment in bootBuildImage documentation #33424
    • Update the reference docs to document the need to declare the native-maven-plugin when using buildpacks to create a native image #33422
    • Document that the shutdown endpoint is not intended for use when deploying a war to a servlet container #33410
    • Reinstate GraphQL testing documentaion #33407
    • Description of NEVER in Sanitize Sensitive Values isn't formatted correctly #33398

    :hammer: Dependency Upgrades

    • Upgrade to AspectJ 1.9.19 #33586
    • Upgrade to Byte Buddy 1.12.20 #33587
    • Upgrade to Couchbase Client 3.4.1 #33588
    • Upgrade to Dropwizard Metrics 4.2.14 #33589
    • Upgrade to Elasticsearch Client 8.5.3 #33590
    • Upgrade to Hibernate 6.1.6.Final #33591
    • Upgrade to HttpClient 4.5.14 #33592
    • Upgrade to HttpCore 4.4.16 #33593
    • Upgrade to Infinispan 14.0.4.Final #33594
    • Upgrade to Jaybird 4.0.8.java11 #33595
    • Upgrade to Jetty 11.0.13 #33596
    • Upgrade to jOOQ 3.17.6 #33597
    • Upgrade to Kotlin 1.7.22 #33598
    • Upgrade to Lettuce 6.2.2.RELEASE #33599
    • Upgrade to MongoDB 4.8.1 #33600
    • Upgrade to MSSQL JDBC 11.2.2.jre17 #33601
    • Upgrade to Native Build Tools Plugin 0.9.19 #33602

    ... (truncated)

    Commits
    • 837947c Release v3.0.1
    • 5929d95 Merge branch '2.7.x'
    • b10b788 Next development version (v2.7.8-SNAPSHOT)
    • f588793 Update copyright year of changed files
    • 0254619 Merge branch '2.7.x'
    • e4772cf Update copyright year of changed files
    • 2e7ca6f Warning if <springProfile> is used in phase 2 model elements
    • 2ed512d Use model.deepMarkAsSkipped in SpringProfileModelHandler
    • 532fed3 Increase couchbase connection timeout for tests
    • 9562a2c Merge branch '2.7.x'
    • Additional commits viewable in compare view

    Updates spring-boot-maven-plugin from 2.7.5 to 3.0.1

    Release notes

    Sourced from spring-boot-maven-plugin's releases.

    v3.0.1

    :lady_beetle: Bug Fixes

    • Fix typo in LocalDevToolsAutoConfiguration logging #33615
    • No warning is given when <springProfile> is used in a Logback <root> block #33610
    • Auto-configure PropagationWebGraphQlInterceptor for tracing propagation #33542
    • WebClient instrumentation fails with IllegalArgumentException when adapting to WebClientExchangeTagsProvider #33483
    • Reactive observation auto-configuration does not declare order for WebFilter #33444
    • Web server fails to start due to "Resource location must not be null" when attempting to use a PKCS 11 KeyStore #33433
    • Actuator health endpoint for neo4j throws NoSuchElementException and always returns Status.DOWN #33428
    • Anchors in YAML configuration files throw UnsupportedOperationException #33404
    • ZipkinRestTemplateSender is not customizable #33399
    • AOT doesn't work with Logstash Logback Encoder #33387
    • Maven process-aot goal fails when release version is set in Maven compiler plugin #33382
    • DependsOnDatabaseInitializationPostProcessor re-declares bean dependencies at native image runtime #33374
    • @SpringBootTest now throws a NullPointerException rather than a helpful IllegalStateException when @SpringBootConfiguration is not found #33371
    • bootBuildImage always trys to create a native image due to bootJar always adding a META-INF/native-image/argfile to the jar #33363

    :notebook_with_decorative_cover: Documentation

    • Improve gradle plugin tags documentation #33617
    • Improve maven plugin tags documentation #33616
    • Fix typo in tomcat accesslog checkExists doc #33512
    • Documented Java compiler level is wrong #33505
    • Fix typo in documentation #33453
    • Update instead of replace environment in bootBuildImage documentation #33424
    • Update the reference docs to document the need to declare the native-maven-plugin when using buildpacks to create a native image #33422
    • Document that the shutdown endpoint is not intended for use when deploying a war to a servlet container #33410
    • Reinstate GraphQL testing documentaion #33407
    • Description of NEVER in Sanitize Sensitive Values isn't formatted correctly #33398

    :hammer: Dependency Upgrades

    • Upgrade to AspectJ 1.9.19 #33586
    • Upgrade to Byte Buddy 1.12.20 #33587
    • Upgrade to Couchbase Client 3.4.1 #33588
    • Upgrade to Dropwizard Metrics 4.2.14 #33589
    • Upgrade to Elasticsearch Client 8.5.3 #33590
    • Upgrade to Hibernate 6.1.6.Final #33591
    • Upgrade to HttpClient 4.5.14 #33592
    • Upgrade to HttpCore 4.4.16 #33593
    • Upgrade to Infinispan 14.0.4.Final #33594
    • Upgrade to Jaybird 4.0.8.java11 #33595
    • Upgrade to Jetty 11.0.13 #33596
    • Upgrade to jOOQ 3.17.6 #33597
    • Upgrade to Kotlin 1.7.22 #33598
    • Upgrade to Lettuce 6.2.2.RELEASE #33599
    • Upgrade to MongoDB 4.8.1 #33600
    • Upgrade to MSSQL JDBC 11.2.2.jre17 #33601
    • Upgrade to Native Build Tools Plugin 0.9.19 #33602

    ... (truncated)

    Commits
    • 837947c Release v3.0.1
    • 5929d95 Merge branch '2.7.x'
    • b10b788 Next development version (v2.7.8-SNAPSHOT)
    • f588793 Update copyright year of changed files
    • 0254619 Merge branch '2.7.x'
    • e4772cf Update copyright year of changed files
    • 2e7ca6f Warning if <springProfile> is used in phase 2 model elements
    • 2ed512d Use model.deepMarkAsSkipped in SpringProfileModelHandler
    • 532fed3 Increase couchbase connection timeout for tests
    • 9562a2c Merge branch '2.7.x'
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    type: dependency-upgrade 
    opened by dependabot[bot] 0
  • Deprecate `ProjectContext.getBuildFile()`

    Deprecate `ProjectContext.getBuildFile()`

    What needs to be done

    Deprecate ProjectContext.getBuildFile()

    Why it needs to be done

    Using this method only works for single-module projects. Deprecating the method and providing javadoc will communicate this to users.

    type: enhancement 
    opened by fabapp2 0
  • IndexOutOfBoundsException: Illegal start index

    IndexOutOfBoundsException: Illegal start index

    Describe the bug Errors during migration

    To Reproduce Steps to reproduce the behavior:

    1. java -jar spring-boot-migrator.jar
    2. scan

    Stacktrace

    ` [ok] Found pom.xml. [ok] 'sbm.gitSupportEnabled' is 'true', changes will be committed to branch [migration-auto] after each recipe. [ok] Required Java version (17) was found. [ok] Found required source dir 'src/main/java'.

    Maven 100% │████████████████████████████████│ 20/20 (0:00:13 / 0:00:00) 14:08:39.661 [main] ERROR o.s.s.o.RewriteExecutionContext - Exception occured! java.lang.IndexOutOfBoundsException: Illegal start index at java.base/java.util.regex.Matcher.find(Matcher.java:770) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.lambda$visitVariables$28(ReloadableJava17ParserVisitor.java:1391) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitVariables(ReloadableJava17ParserVisitor.java:1398) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitVariable(ReloadableJava17ParserVisitor.java:1346) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitVariable(ReloadableJava17ParserVisitor.java:71) at com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:1045) at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convert(ReloadableJava17ParserVisitor.java:1482) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convert(ReloadableJava17ParserVisitor.java:1511) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convertStatements(ReloadableJava17ParserVisitor.java:1620) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convertStatements(ReloadableJava17ParserVisitor.java:1602) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitClass(ReloadableJava17ParserVisitor.java:472) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitClass(ReloadableJava17ParserVisitor.java:71) at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:860) at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convert(ReloadableJava17ParserVisitor.java:1482) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convertAll(ReloadableJava17ParserVisitor.java:1535) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitCompilationUnit(ReloadableJava17ParserVisitor.java:518) at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitCompilationUnit(ReloadableJava17ParserVisitor.java:71) at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:614) at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86) at org.openrewrite.java.isolated.ReloadableJava17Parser.lambda$parseInputs$0(ReloadableJava17Parser.java:178) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at org.openrewrite.java.isolated.ReloadableJava17Parser.parseInputs(ReloadableJava17Parser.java:200) at org.openrewrite.java.Java17Parser.parseInputs(Java17Parser.java:43) at org.springframework.sbm.java.impl.RewriteJavaParser.parseInputs(RewriteJavaParser.java:61) at org.springframework.sbm.project.parser.MavenProjectParser.parseMainJavaSources(MavenProjectParser.java:217) at org.springframework.sbm.project.parser.MavenProjectParser.parse(MavenProjectParser.java:118) at org.springframework.sbm.project.parser.ProjectContextInitializer.initProjectContext(ProjectContextInitializer.java:53) at org.springframework.sbm.engine.commands.ScanCommand.execute(ScanCommand.java:57) at org.springframework.sbm.shell.ScanShellCommand.scan(ScanShellCommand.java:70) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.shell.command.invocation.InvocableShellMethod.doInvoke(InvocableShellMethod.java:306) at org.springframework.shell.command.invocation.InvocableShellMethod.invoke(InvocableShellMethod.java:232) at org.springframework.shell.command.CommandExecution$DefaultCommandExecution.evaluate(CommandExecution.java:158) at org.springframework.shell.Shell.evaluate(Shell.java:208) at org.springframework.shell.Shell.run(Shell.java:140) at org.springframework.shell.jline.InteractiveShellRunner.run(InteractiveShellRunner.java:73) at org.springframework.shell.DefaultShellApplicationRunner.run(DefaultShellApplicationRunner.java:65) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:762) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) at org.springframework.sbm.SpringShellApplication.main(SpringShellApplication.java:27) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) 14:08:39.669 [main] ERROR o.s.s.o.RewriteExecutionContext - Exception occured!

    `

    Desktop:

    • OS: Windows
    • Version 11

    Additional context The Spring Boot project has multiple modules

    type: bug wontfix 
    opened by 10142327 1
  • spring-boot-upgrade does not use correct port when it asks to open the report

    spring-boot-upgrade does not use correct port when it asks to open the report

    Describe the bug When spring-boot-upgrade is started with a different port than 8080, it still asks to open the report on port 8080.

    To Reproduce Steps to reproduce the behavior:

    1. run spring-boot-upgrade with e.g. java -Dsbm.gitSupportEnabled=false -Dserver.port=8432 --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -jar spring-boot-upgrade.jar
    2. It executes and prints

    / | () | ___ \ | | |__ | \ --. _ __ _ __ _ _ __ __ _ | |_/ / ___ ___ | |_ / /--. \ '_ | '| | '_ \ / ` | | ___ / _ \ / _ | __| \
    /_
    / / |) | | | | | | | (| | | |/ / () | () | | .
    / / _/| ./|| ||| ||_, | _/ _/ _/ _| _/ | | / | || |/


    | | | | | | | ___ \ | | | | | |_ __ __ _ _ __ __ _ | | ___ | |/ / _ __ ___ _ | | | | | | ' \ / | '__/ _ |/ ` |/ _ \ | // _ \ ' \ / _ | '__| __| | || | |) | (| | | | (| | (| | / | |\ \ _/ |) | () | | | | _/| ./ _, || _,|_,|_| _| __| ./ ___/|| _| | | / | | | || |/ |_|

    powered by Spring Boot Migrator


    Find us on GitHub: https://via.vmw.com/8AD63p

    Please report all errors: https://via.vmw.com/bXlqJC


    Scanning /Users/mgemis/Projects/p4/awp/bluecloud/microservices/eureka-server finished scan. Please open: http://localhost:8080/spring-boot-upgrade

    1. while it is listening on port 8432

    Expected behavior The text should read finished scan. Please open: http://localhost:8432/spring-boot-upgrade

    Desktop (please complete the following information):

    • OS: MacOS
    • Version jar file provided via issue #601 on Jan 3, 2023.
    type: bug 
    opened by marcgemis 1
Releases(0.13.0)
  • 0.13.0(Dec 2, 2022)

    :star: New Features

    • All report sections in upgrade report shown for Boot 2.7 and 3.0 #587
    • Maven settings.xml get evaluated #581
    • Report section for Actuator Endpoints Sanitization #570
    • Use correct boot version in new report #569
    • 3.0 Upgrade Recipe: Remove Image Banner from default location #558
    • Fixing PagingAndSortingHelperTest conforming to new finder #556
    • Report sections get removed when migration recipe was applied #551
    • Deprecation of CommonsMultipartResolver gets reported #549
    • Highlight files in PagingAndSorting Report section #539
    • Move paging and sorting report to new Boot Upgrade Report #537
    • New web application for Boot Upgrade report #536
    • Merge scopes when adding a dependency that exists but with different scope #533
    • Test for getDependency variations #520
    • Constructor binding report generation for spring 2.7 to 3.0 project #515
    • SpringBootUpgradeReportTestSupport allows asserting a section gets not rendered #504
    • Add removal of Image Banner to report #499
    • Fix some trivial issues learned on real project #492
    • Rework Upgrade Report support #483
    • Rework report generation #482
    • Moved upgrade WireMock dependency to new report #481
    • Upgrade spring cloud dependency recipe #479
    • adding the jmx endpoint exposure related files . #473
    • wiremock-jre8 needs to be changed to wiremock-jre8-standalone #472
    • 3.0.0: Update Spring Cloud when upgrading to Spring Boot 3 #470
    • Refactor #461 - Remove addDefaultPropertiesFileToTopModules flag #469
    • Support for .mvn/maven.config #468
    • Support for .mvn/maven.config #462
    • Merge scopes when adding a dependency that exists but with different scope #455
    • Use unified IsSpringBootProject condition #454
    • 3.0.0-M5: Actuator Endpoints Sanitization #445
    • 3.0.0-M5: JMX Endpoint Exposure #444
    • 3.0.0-M5: Cassandra Properties #442
    • 3.0.0-M5: Changes to Data properties #441
    • Log and proceed when resources under test have syntax errors #399
    • 3.0.0-M3 Support for Apache Solr Removed #371

    :lady_beetle: Bug Fixes

    • migrator does not honor Maven settings.xml #573
    • Fixed recipes names #555
    • Fix Upgrade Report generation by unpacking spring-asciidoctor-backends #521
    • Problem with dependency resolution in a multi-module JEE ear project #516
    • Fix NullPointerException in VisitorUtils #509
    • fix: TriggerMesh support flag unset after test #506
    • `MuleToJavaDSLTransactionalTest? fails with GitHub Actions #505
    • Fix: An error "fullyQualified" is null happened when generating boot-2.7-3.0-upgrade-report #480
    • An error "fullyQualified" is null happened when generating boot-2.7-3.0-upgrade-report #478
    • Fix #457 - Enhance initialise spring boot integration test #460
    • Fix api usage #459
    • Git adds files when .git is in parent dir of project #458
    • Dependency not added twice with same scope #452
    • IsMatchingSpringBootVersion fails with pom.xml having only Spring Boot declared in dependencyManagement #423
    • Adding files to git index does not work for projects with .git in some parent dir #397
    • BuildFile.addDependencies(...) should not add existing dependency again #309
    • Version for spring-boot-maven-plugin must be set when Boot dependencies are added by #284
    • org.springframework.sbm.jee.jaxrs.recipes.ReplaceMediaTypeTest throws UnsupportedOperationException #172

    :notebook_with_decorative_cover: Documentation

    • Fix typo in README #466

    :hammer: Dependency Upgrades

    • Bump asciidoctorj from 2.5.6 to 2.5.7 #497
    • Bump htmlunit from 2.66.0 to 2.67.0 #566
    • Bump jcl-over-slf4j from 2.0.2 to 2.0.5 #451, #565, #575
    • Bump maven-release-plugin from 3.0.0-M6 to 3.0.0-M7 #530
    • Bump org.eclipse.jgit from 6.3.0.202209071007-r to 6.4.0.202211300538-r #583
    • Bump progressbar from 0.9.4 to 0.9.5 #474
    • Bump rewrite-migrate-java from 1.11.0 to 1.13.0 #477, #493
    • Bump spring-boot.version from 2.7.4 to 2.7.5 #496
    • Bump spring-javaformat-maven-plugin from 0.0.34 to 0.0.35 #465
    • Bump spring-shell-dependencies from 2.1.1 to 2.1.2 #464
    • Bump testcontainers from 1.17.3 to 1.17.6 #456, #463, #562

    :heart: Contributors

    Thank you to all the contributors who worked on this release:

    @BenjaminHerbert, @ahmedmq, @ashakirin, @bottemav, @fabapp2, @ishu-thakur, @kuldeepsidhu88, @ravig-kant, @sanagaraj-pivotal, and @tan9

    Source code(tar.gz)
    Source code(zip)
    spring-boot-migrator.jar(203.24 MB)
    spring-boot-upgrade.jar(152.90 MB)
  • 0.12.0(Sep 26, 2022)

    :star: New Features

    • Supports TriggerMesh for MuleSoft Dataweave Transformations #434
    • Bump spring boot version used in recipes to 2.7.3 #424
    • MigrateJaxRsRecipe adds required=false to all @RequestParam without required #422
    • Upgrade only older explicit versions #421
    • Fixed used JavaParser when adding JavaSources #419
    • Ignore namespaces when unmarshalling web.xml #409
    • ApplicationModules recognizes war and jar as application module #405
    • ApplicationModules should recognize pom. types of jar and war as potential application module #403
    • Adds action to set unitName on PersistenceContext annotation to default #401
    • Add Action to set unitName attribute on @PersistenceContext to 'default' #400
    • Provide API for @RestController Spring Beans #386
    • Add Mule package type to getTopmostApplicationModules #385
    • Provide a list of managed dependencies with version for a given pom #384
    • Make Spring Boot upgrade 3 ConstructorBinding multi-module aware #382
    • Make Spring Boot upgrade 3 Configuration multi-module aware #381
    • Makes ehchache migration multi-module aware for Spring Boot 3 upgrade #374
    • Make Spring Boot upgrade 3 ehcache multi module aware #370
    • Makes CreateAutoConfigurationAction multi-module aware #369
    • Add .sdkmanrc with 17.0.4-tem #368
    • CreateAutoconfigurationAction should be multi module aware #365
    • Provide a method ApplicationModules.findModuleContaining(Path) #362
    • Build pipeline in concourse #341
    • 270 make initialize spring boot migration work with simple multi maven module project #340
    • Map all fields of a PluginRepository #336
    • Provide test helper for section builder tests #332
    • The integration test for Boot 3.0 upgrades should build the migrated project #329
    • Rework condition for JSON-B recipe #328
    • Report for Boot 3.0.0-M1 removals #324
    • #305 Provide SpringBootDefaultPropertiesFinder that returns the default ap… #323
    • Provide search methods for ApplicationModule #319
    • 3.0.0-M3 Logging Date Format #296
    • Improve printout of applied recipes #293
    • Error handling in OpenRewriteRewriteRecipeAdapters #287
    • Make initialize-spring-boot-migration work with simple multi Maven module project #270
    • 3.0.0-M1 Jersey temporarily removed (closes #160) #269
    • Support upgrade of Spring Boot applications not using parent pom #263
    • 3.0.0-M3 Sorting repositories no longer inherit from CRUD repositories. #257
    • Report usage of removed DatabaseDriver.GAE #244
    • 3.0.0-M3 PagingAndSortingRepository does not extend CrudRepository anymore #242
    • Recipe AddRepositoryAction doesn't check condition NoRepositoryExistsCondition #241
    • Integrating Spring boot 3 property refactor into SBM #238
    • 3.0.0-M3 PagingAndSortingRepository does not extend CrudRepository anymore #236
    • Allow MAVEN_HOME or M2_HOME for integration tests #235
    • Make SBM compatible to JDK 17 #213
    • Move SAML2 properties issue into OR and reintegrate in SBM #198
    • Fix MavenProjectParser to parse all resources #190
    • Add support for generating code to send MuleSoft Dataweave Transformations to TriggerMesh #183
    • 2.7: Changes to Auto-configuration #156 #182
    • Rework OpenRewrite recipe integration #181
    • Rework openrewrite integration #180
    • Support for auto handling of SQL Injection in Mule #146
    • Oracle DB Config support #145
    • 140 db insert #144
    • 138 transactional #139
    • Mule: support component in mule #138
    • 130 - Support foreach #136
    • Support mule component #130
    • 118 multiple dwl #127
    • 119 db select support #126
    • #56 Migrate all properties to @Stateless when migrating ejb-jar.xml t… #123

    :lady_beetle: Bug Fixes

    • Fix requested manually managed dependencies #432
    • Fix root build file selection #429
    • After applying initialize-spring-boot-migration the recipe is still shown as applicable #418
    • 414 fixed not found managed dependency #415
    • 411 fixed version property spring dependencies import #412
    • Conditions HasSpringBootDependencyImport don't recognise version property #411
    • Fix Git commit and deleted resource filter #408
    • Git commit is broken #407
    • No path set to @RequestMapping for JAX-RS method without @Path #404
    • Migrating JAX-RS annotations results in broken annotation when path given on type level #402
    • Fixing Module.getModuleResources #367
    • Micrometer binder module recipe fails #330
    • Spring boot migrator displays only applied recipe #321
    • Spring boot migrator does not bump spring version #315
    • BootUpgrade_27_30_IntegrationTest fails #275
    • NullPointerException from NoRepositoryExistsCondition #179
    • Check conditions for 2.4 to 2.5 upgrade actions. Closes #133 #135
    • Fix Conditions for Spring Boot 2.4 to 2.5 Upgrade recipes #133
    • Multiple Dataweave transform message in same flow should produce multiple transform class #118
    • Imported inner classes not always used #116

    :hammer: Dependency Upgrades

    • Bump amqp-client from 5.15.0 to 5.16.0 #391
    • Bump asciidoctorj from 2.5.5 to 2.5.6 #425
    • Bump jaxrs-code-generator from 3.0.5 to 3.0.7 #239
    • Bump jcl-over-slf4j from 2.0.1 to 2.0.2 #430
    • Bump maven-compiler-plugin from 3.8.1 to 3.10.1 #274
    • Bump maven-invoker from 3.0.1 to 3.2.0 #94
    • Bump maven-jar-plugin from 3.2.2 to 3.3.0 #398
    • Bump maven-release-plugin from 3.0.0-M4 to 3.0.0-M6 #277
    • Bump mq-jms-spring-boot-starter from 2.7.2 to 2.7.4 #437
    • Bump OpenRewrite to 7.29.0 #394
    • Bump org.eclipse.jgit from 6.2.0.202206071550-r to 6.3.0.202209071007-r #389
    • Bump progressbar from 0.9.3 to 0.9.4 #392
    • Bump rewrite-migrate-java from 1.10.0 to 1.11.0 #436
    • Bump spring-boot.version from 2.7.3 to 2.7.4 #435
    • Bump spring-javaformat-maven-plugin from 0.0.31 to 0.0.34 #278
    • Bump spring-shell-dependencies from 2.1.0 to 2.1.1 #356
    • Bump ST4 from 4.3.3 to 4.3.4 #390

    :heart: Contributors

    Thank you to all the contributors who worked on this release:

    @ashakirin, @cab105, @eddumelendez, @ijusti, @ravig-kant, and @sanagaraj-pivotal

    Source code(tar.gz)
    Source code(zip)
    spring-boot-migrator.jar(202.77 MB)
  • 0.11.1(May 23, 2022)

  • 0.11.0(May 22, 2022)

    0.11.0 - 2022-05-22

    Adds

    • Unmarshalling ejb-jar.xml for EJB 2.1 (#62)
    • Demo for Mule to Boot migration (#80)
    • Demo for Spring Boot 2.4 to 2.5 upgrade (#120)
    • New Mule 3.9 components and schemas (#110, #95, #87)
    • Bumped some dependency versions

    Fixes

    • Paths and CLI rendering under Windows (#58)
    • Fix SBM when using Windows (#58)
    • Bump some dependency versions, removes CVEs
    • SBM generates Asciidoc report when started as jar
    • 2.4 to 2.5 upgrade does not randomly fail anymore
    • Full Windows support (#91)
    • Builds on Mac M1 (#114)
    Source code(tar.gz)
    Source code(zip)
    spring-boot-migrator.jar(191.05 MB)
  • 0.10.0(Mar 28, 2022)

Owner
Spring Projects Experimental
Experimental projects in the Spring ecosystem
Spring Projects Experimental
Java upgrade example errors and solutions

Java upgrade example errors and solutions This project shows the errors encountered during a Java upgrade and the necessary fixes. Per Java version th

Johan Janssen 241 Dec 31, 2022
该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的线上博客项目/企业大型商城系统/前后端分离实践项目等,摆脱各种 hello world 入门案例的束缚,真正的掌握 Spring Boot 开发。

Spring Boot Projects 该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的前

十三 4.5k Dec 30, 2022
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc

Spring 系列教程 该仓库为个人博客https://mrbird.cc中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2

mrbird 24.8k Jan 6, 2023
My first proper GitHub project, I guess. Basically an automated version of the "Battle Royale" short series on Geo Facts' YouTube channel.

State-Royale Made by Pixer415, with some help from ThatOneCalculator This project needs your contributions. New modes/new features/typo fixes/suggesti

null 2 Jun 27, 2022
Framework for automated integration tests with focus on messaging integration

Citrus Integration Testing Welcome to Citrus Citrus is a test framework written in Java that is able to create fully automated end-to-end use case tes

Citrus Framework 373 Dec 27, 2022
Automated health check for Zeebe cluster

cluster-healthcheck Automated health check for Camunda Cloud clusters. See HealthCheck for usage. This project is in very very early stages of develop

Peter Ihme 2 Oct 16, 2021
A manager tool to categorize game assets such as images and sounds/music. The tool enables you to tag these files, so that finding them by tags allows fast searches.

BtAssetManager This application allows you to easily categorize large amounts of image and sound files. You can apply tags to each individual file to

null 21 Sep 15, 2022
Spring Boot Login and Registration example with MySQL, JWT, Rest Api - Spring Boot Spring Security Login example

Spring Boot Login example with Spring Security, MySQL and JWT Appropriate Flow for User Login and Registration with JWT Spring Boot Rest Api Architect

null 58 Jan 5, 2023
Code katas for learning Spring® and Spring Boot.

What is the spring-course? The Spring course consists of two related tutorials that teach developers about Spring Framework and then Spring Boot. The

BNY Mellon 445 Nov 20, 2022
Z2Laser - a simple Java-based tool to convert Z movements in your G-Code files to Laser on or off commands

Z2Laser - a simple Java-based tool to convert Z movements in your G-Code files to Laser on or off commands

EOA-electronics 1 Feb 20, 2022
Classpy is a GUI tool for investigating Java class file, Lua binary chunk, Wasm binary code, and other binary file formats.

Classpy Classpy is a GUI tool for investigating Java class file, Lua binary chunk, Wasm binary code, and other binary file formats. Inspiration This t

null 1k Dec 17, 2022
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。

Spring Boot 学习示例 Spring Boot 使用的各种示例,以最简单、最实用为标准,此开源项目中的每个示例都以最小依赖,最简单为标准,帮助初学者快速掌握 Spring Boot 各组件的使用。 Spring Boot 中文索引 | Spring Cloud学习示例代码 | Spring

纯洁的微笑 28.3k Jan 1, 2023
spring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。另外写博客,用 OpenWrite。

推荐工具: 微信公众号 Markdown 编辑器 - OpenWrite:Markdown 微信编辑器是一款专业强大的微信公众平台在线编辑排版工具,提供手机预览功能,让用户在微信图文 、文章、内容排版、文本编辑、素材编辑上更加方便。 - 更多介绍 博客群发平台 一、支持泥瓦匠 Spring Boot

泥瓦匠BYSocket 15.2k Jan 5, 2023
Spring-Boot-Plus is a easy-to-use, high-speed, high-efficient,feature-rich, open source spring boot scaffolding

Everyone can develop projects independently, quickly and efficiently! What is spring-boot-plus? A easy-to-use, high-speed, high-efficient, feature-ric

geekidea 2.3k Dec 31, 2022
Two Spring-boot applications registering themselves to an spring-boot-admin-server application as separate clients for the purpose of monitoring and managing the clients

Spring-boot-admin implementation with 1 Server and 2 clients Creating a Server application to monitor and manage Spring boot applications (clients) un

null 6 Dec 6, 2022
The Spring Boot Sample App on K8S has been implemented using GKE K8S Cluster, Spring Boot, Maven, and Docker.

gke-springboot-sampleapp ?? The Spring Boot Sample App on K8S has been implemented using GKE K8S Cluster, Spring Boot, Maven, and Docker. Usage To be

KYEONGMIN CHO 1 Feb 1, 2022
spring boot project with code review study

Getting started need Java 11 installed $ ./gradlew build bootRun 프로젝트 진행 사항 언어 : JAVA 11 프레임워크 : Spring Boot 빌드툴 : Gradle 6.9 db : h2 테이블 구조 : 일요일에 각

null 7 Dec 11, 2022
How to configure Replica Set with Embedded Mongo using Spring Boot and Flapdoodle for unit testing code that uses mongodb transactions

Spring Boot Embedded Mongo with Replica Set This project defines a basic rest service that allows users to update records of a Person (name and email)

Divyansh Shekhar Gaur 4 Nov 1, 2022
A web application to generate Java source code with spring-boot and mybatis-plus

A web application to generate Java source code with spring-boot and mybatis-plus. Also, The class of Domain,Mapper,XML of Mapper Interface,Service,Controller are included. You can change the data source what you want to generate for your project in app running without restart this code -generator application.

Weasley 3 Aug 29, 2022