Skip to content

Commit fc1a8bd

Browse files
4.x: Native image update (#7711)
* Native image update - Java 21 - latest version - replace artifact id - remove initialize-at-build-time in SE - doc fix - Updates to graalvm github action - Upgrade jar plugin to honor main class attribute for modules - Add main class to modularized test - Add kotlin dependency to resolve modularized failure - Native packaging test fixed. - Fix archetypes to work with new jar plugin - Kafka connector native image updates --------- Co-authored-by: Daniel Kec <[email protected]>
1 parent 193297e commit fc1a8bd

File tree

118 files changed

+1503
-1106
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+1503
-1106
lines changed

.github/workflows/validate.yml

+8-5
Original file line numberDiff line numberDiff line change
@@ -140,22 +140,25 @@ jobs:
140140
- name: Test archetypes
141141
run: etc/scripts/test-archetypes.sh
142142
packaging:
143-
timeout-minutes: 30
143+
timeout-minutes: 60
144144
strategy:
145145
matrix:
146146
os: [ ubuntu-20.04, macos-latest]
147147
runs-on: ${{ matrix.os }}
148148
steps:
149149
- uses: actions/checkout@v3
150-
- name: Set up JDK ${{ env.JAVA_VERSION }}
151-
uses: actions/[email protected]
150+
- uses: graalvm/setup-graalvm@v1
152151
with:
153-
distribution: ${{ env.JAVA_DISTRO }}
154-
java-version: ${{ env.JAVA_VERSION }}
152+
java-version: 21
153+
distribution: graalvm-community
154+
github-token: ${{ secrets.GITHUB_TOKEN }}
155+
native-image-job-reports: true
155156
cache: maven
156157
- name: Build Helidon
157158
run: etc/scripts/github-compile.sh
158159
- name: JAR packaging
159160
run: etc/scripts/test-packaging-jar.sh
160161
- name: JLink packaging
161162
run: etc/scripts/test-packaging-jlink.sh
163+
- name: Native-Image packaging
164+
run: etc/scripts/test-packaging-native.sh

applications/parent/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
<version.plugin.failsafe>3.1.2</version.plugin.failsafe>
4545
<version.plugin.helidon>4.0.0-M2</version.plugin.helidon>
4646
<version.plugin.helidon-cli>4.0.0-M2</version.plugin.helidon-cli>
47-
<version.plugin.jar>3.0.2</version.plugin.jar>
48-
<version.plugin.nativeimage>0.9.16</version.plugin.nativeimage>
47+
<version.plugin.jar>3.3.0</version.plugin.jar>
48+
<version.plugin.nativeimage>0.9.27</version.plugin.nativeimage>
4949
<version.plugin.os>1.5.0.Final</version.plugin.os>
5050
<version.plugin.protobuf>0.6.1</version.plugin.protobuf>
5151
<version.plugin.resources>3.3.1</version.plugin.resources>

archetypes/helidon/src/main/archetype/common/files/Dockerfile.native.mustache

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11

22
# 1st stage, build the app
3-
FROM ghcr.io/graalvm/graalvm-ce:ol9-java21-22.3.1 as build
4-
5-
# Install native-image
6-
RUN gu install native-image
3+
FROM ghcr.io/graalvm/graalvm-community:21.0.0-ol9 as build
74

85
WORKDIR /usr/share
96

archetypes/helidon/src/main/archetype/mp/common/common-mp.xml

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<source src="/common/sources.xml"/>
2626
<output>
2727
<model>
28+
<value key="mainClass">${package}.Main</value>
2829
<value key="parent-artifactId">helidon-mp</value>
2930
<list key="dependencies">
3031
<map>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
package {{package}};
3+
4+
/**
5+
* Main entry point of the application.
6+
* This class is registered as the main class in the jar manifest, as well as the main class of the module.
7+
*/
8+
public class Main {
9+
/**
10+
* Main method. Starts CDI (and the application).
11+
*
12+
* @param args ignored
13+
*/
14+
public static void main(String[] args) {
15+
io.helidon.Main.main(args);
16+
}
17+
}

archetypes/helidon/src/main/archetype/mp/custom/custom-mp.xml

+2
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,9 @@
8282
<value>jakarta.cdi</value>
8383
<value>jakarta.inject</value>
8484
<value>jakarta.ws.rs</value>
85+
<value>io.helidon</value>
8586
<value>io.helidon.microprofile.config</value>
87+
<value>io.helidon.microprofile.server</value>
8688
</list>
8789
</model>
8890
</output>

common/common/src/main/resources/META-INF/native-image/io.helidon.common/helidon-common/native-image.properties

-18
This file was deleted.

common/media-type/src/main/resources/META-INF/native-image/io.helidon.common/helidon-common-media-type/native-image.properties

-19
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"resources": [
3+
{
4+
"pattern": "META-INF/helidon/media-types.properties"
5+
},
6+
{
7+
"pattern": "io/helidon/common/media/type/default-media-types.properties"
8+
}
9+
]
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"resources": [
3+
{
4+
"pattern": "mp-meta-config.yaml"
5+
},
6+
{
7+
"pattern": "mp-meta-config.properties"
8+
}
9+
]
10+
}

config/config/src/main/resources/META-INF/native-image/io.helidon.config/helidon-config/resource-config.json

+43
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,51 @@
33
{
44
"pattern": "application.properties"
55
},
6+
{
7+
"pattern": "application.yaml"
8+
},
9+
{
10+
"pattern": "application.json"
11+
},
12+
{
13+
"pattern": "application.conf"
14+
},
15+
{
16+
"pattern": "application.yml"
17+
},
618
{
719
"pattern": "meta-config.properties"
20+
},
21+
{
22+
"pattern": "meta-config.json"
23+
},
24+
{
25+
"pattern": "meta-config.yaml"
26+
},
27+
{
28+
"pattern": "meta-config.yml"
29+
},
30+
{
31+
"pattern": "meta-config.conf"
32+
},
33+
{
34+
"pattern": "config-profile.yaml"
35+
},
36+
37+
{
38+
"pattern": "config-profile.properties"
39+
},
40+
41+
{
42+
"pattern": "config-profile.json"
43+
},
44+
45+
{
46+
"pattern": "config-profile.conf"
47+
},
48+
49+
{
50+
"pattern": "config-profile.yml"
851
}
952
]
1053
}

config/git/src/main/resources/META-INF/native-image/io.helidon.config/helidon-config-git/native-image.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (c) 2020 Oracle and/or its affiliates.
2+
# Copyright (c) 2020, 2023 Oracle and/or its affiliates.
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -14,4 +14,4 @@
1414
# limitations under the License.
1515
#
1616

17-
Args=--initialize-at-build-time=org.slf4j -H:EnableURLProtocols=https
17+
Args=--enable-https

config/yaml-mp/src/main/resources/META-INF/native-image/io.helidon.config/helidon-config-yaml-mp/native-image.properties

-17
This file was deleted.

config/yaml/src/main/resources/META-INF/native-image/io.helidon.config/helidon-config-yaml/native-image.properties

-18
This file was deleted.

config/yaml/src/main/resources/META-INF/native-image/io.helidon.config/helidon-config-yaml/resource-config.json

+12
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@
1111
},
1212
{
1313
"pattern": "config-profile-.*\\.yaml$"
14+
},
15+
{
16+
"pattern": "application.yml"
17+
},
18+
{
19+
"pattern": "meta-config.yml"
20+
},
21+
{
22+
"pattern": "config-profile.yml"
23+
},
24+
{
25+
"pattern": "config-profile-.*\\.yml$"
1426
}
1527
]
1628
}

dbclient/mongodb/src/main/resources/META-INF/native-image/io.helidon.dbclient/helidon-dbclient-mongo/native-image.properties

-41
This file was deleted.

dependencies/pom.xml

+10-12
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<version.lib.google-oauth-client>1.33.3</version.lib.google-oauth-client>
5555
<version.lib.google-error-prone>2.3.3</version.lib.google-error-prone>
5656
<version.lib.google-protobuf>3.21.7</version.lib.google-protobuf>
57-
<version.lib.graalvm>22.3.0</version.lib.graalvm>
57+
<version.lib.graalvm>23.1.0</version.lib.graalvm>
5858
<version.lib.graphql-java>18.6</version.lib.graphql-java>
5959
<version.lib.graphql-java.extended.scalars>18.3</version.lib.graphql-java.extended.scalars>
6060
<version.lib.gson>2.9.0</version.lib.gson>
@@ -94,7 +94,8 @@
9494
<version.lib.jersey>3.1.3</version.lib.jersey>
9595
<version.lib.jgit>6.7.0.202309050840-r</version.lib.jgit>
9696
<version.lib.junit>5.9.3</version.lib.junit>
97-
<version.lib.kafka>3.4.0</version.lib.kafka>
97+
<version.lib.kafka>3.5.1</version.lib.kafka>
98+
<version.lib.kotlin>1.8.0</version.lib.kotlin>
9899
<version.lib.log4j>2.18.0</version.lib.log4j>
99100
<version.lib.logback>1.4.0</version.lib.logback>
100101
<version.lib.mariadb-java-client>2.6.2</version.lib.mariadb-java-client>
@@ -915,7 +916,7 @@
915916
</dependency>
916917
<dependency>
917918
<groupId>org.graalvm.sdk</groupId>
918-
<artifactId>graal-sdk</artifactId>
919+
<artifactId>nativeimage</artifactId>
919920
<version>${version.lib.graalvm}</version>
920921
</dependency>
921922
<dependency>
@@ -943,15 +944,12 @@
943944
<groupId>org.apache.kafka</groupId>
944945
<artifactId>kafka-clients</artifactId>
945946
<version>${version.lib.kafka}</version>
946-
<!-- Snip transitive dependency on Snappy (which should be optional anyways). -->
947-
<!-- This can be removed once kafka-clients is upgraded -->
948-
<!-- to 3.4.2 or newer. See https://issues.apache.org/jira/browse/KAFKA-15096 -->
949-
<exclusions>
950-
<exclusion>
951-
<groupId>org.xerial.snappy</groupId>
952-
<artifactId>snappy-java</artifactId>
953-
</exclusion>
954-
</exclusions>
947+
</dependency>
948+
<dependency>
949+
<!-- required transitively by okhttp (used in OpenTelemetry through Jaeger) -->
950+
<artifactId>kotlin-stdlib</artifactId>
951+
<groupId>org.jetbrains.kotlin</groupId>
952+
<version>${version.lib.kotlin}</version>
955953
</dependency>
956954
<dependency>
957955
<groupId>org.glassfish.jersey.media</groupId>

0 commit comments

Comments
 (0)