DEV Community

Eduardo Issao Ito
Eduardo Issao Ito

Posted on

2

Changing the JVM in spring-boot:build-image

The spring-boot-maven-plugin can create an OCI image from a jar or war file using Cloud Native Buildpacks.

By default it uses a buildpack called paketo-buildpacks/bellsoft-liberica which is based on Bellsoft Liberica JDK.

The list of all Java buildpacks is available in Paketo Buildpacks Reference.

To choose another JVM in spring-boot-maven-plugin, first you need to find the buildpacks that are used by default. Run mvn spring-boot:build-image and look for something like this:

[INFO]     [creator]     ===> DETECTING
[INFO]     [creator]     6 of 26 buildpacks participating
[INFO]     [creator]     paketo-buildpacks/ca-certificates   3.6.1
[INFO]     [creator]     paketo-buildpacks/bellsoft-liberica 10.1.0
[INFO]     [creator]     paketo-buildpacks/syft              1.27.0
[INFO]     [creator]     paketo-buildpacks/executable-jar    6.6.3
[INFO]     [creator]     paketo-buildpacks/dist-zip          5.5.2
[INFO]     [creator]     paketo-buildpacks/spring-boot       5.23.0
Enter fullscreen mode Exit fullscreen mode

That´s the list of buildpacks being used. We need to change Bellsoft Liberica to the desired JVM.

So, to use Microsoft OpenJDK, copy the buildpacks from above, but change paketo-buildpacks/bellsoft-liberica to gcr.io/paketo-buildpacks/microsoft-openjdk. The pom.xml should be:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <image>
            <buildpacks>
                <buildpack>paketo-buildpacks/ca-certificates</buildpack>
                <buildpack>gcr.io/paketo-buildpacks/microsoft-openjdk</buildpack>
                <buildpack>paketo-buildpacks/syft</buildpack>
                <buildpack>paketo-buildpacks/executable-jar</buildpack>
                <buildpack>paketo-buildpacks/dist-zip</buildpack>
                <buildpack>paketo-buildpacks/spring-boot</buildpack>
            </buildpacks>
        </image>
    </configuration>
</plugin>
Enter fullscreen mode Exit fullscreen mode

Now, run mvn spring-boot:build-image and verify that Microsoft OpenJDK is being used:

[INFO]     [creator]     Paketo Buildpack for Microsoft OpenJDK 3.0.1
[INFO]     [creator]       https://github.com/paketo-buildpacks/microsoft-openjdk
...
[INFO]     [creator]       Microsoft OpenJDK 17.0.6: Contributing to layer
[INFO]     [creator]         Downloading from https://aka.ms/download-jdk/microsoft-jdk-17.0.6-linux-x64.tar.gz
Enter fullscreen mode Exit fullscreen mode

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay