Skip to content

Commit 0d8fa98

Browse files
committed
Take JVM args into account when creating AOT file
Fixes: #52935
1 parent 85c5428 commit 0d8fa98

3 files changed

Lines changed: 26 additions & 3 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
11
package io.quarkus.deployment.pkg.builditem;
22

3+
import java.util.List;
4+
import java.util.Optional;
5+
36
import io.quarkus.builder.item.SimpleBuildItem;
47

58
/**
69
* Indicates that a specific container image should be used to generate the AppCDS file
710
*/
11+
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
812
public final class JvmStartupOptimizerArchiveContainerImageBuildItem extends SimpleBuildItem {
913

1014
private final String containerImage;
15+
private final Optional<List<String>> additionalJvmArgs;
1116

17+
@Deprecated(forRemoval = true, since = "3.34")
1218
public JvmStartupOptimizerArchiveContainerImageBuildItem(String containerImage) {
19+
this(containerImage, Optional.empty());
20+
}
21+
22+
public JvmStartupOptimizerArchiveContainerImageBuildItem(String containerImage, Optional<List<String>> additionalJvmArgs) {
1323
this.containerImage = containerImage;
24+
this.additionalJvmArgs = additionalJvmArgs;
1425
}
1526

1627
public String getContainerImage() {
1728
return containerImage;
1829
}
30+
31+
public Optional<List<String>> getAdditionalJvmArgs() {
32+
return additionalJvmArgs;
33+
}
1934
}

core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/JvmStartupOptimizerArchiveBuildStep.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,15 @@ public void build(Optional<JvmStartupOptimizerArchiveRequestedBuildItem> request
169169
archivePath = createAppCDSFromExit(jarResult, outputTarget, javaBinPath, containerImage,
170170
isFastJar);
171171
} else if (archiveType == JvmStartupOptimizerArchiveType.AOT) {
172-
archivePath = createAot(jarResult, outputTarget, javaBinPath, containerImage, isFastJar,
173-
packageConfig.jar().aot().additionalRecordingArgs().orElse(List.of()));
172+
List<String> additionalJvmArguments = new ArrayList<>();
173+
if (packageConfig.jar().aot().additionalRecordingArgs().isPresent()) {
174+
additionalJvmArguments.addAll(packageConfig.jar().aot().additionalRecordingArgs().get());
175+
}
176+
if (jvmStartupOptimizerArchiveContainerImage.isPresent()
177+
&& jvmStartupOptimizerArchiveContainerImage.get().getAdditionalJvmArgs().isPresent()) {
178+
additionalJvmArguments.addAll(jvmStartupOptimizerArchiveContainerImage.get().getAdditionalJvmArgs().get());
179+
}
180+
archivePath = createAot(jarResult, outputTarget, javaBinPath, containerImage, isFastJar, additionalJvmArguments);
174181
} else {
175182
throw new IllegalStateException("Unsupported archive type: " + archiveType);
176183
}

extensions/container-image/container-image-jib/deployment/src/main/java/io/quarkus/container/image/jib/deployment/JibProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ public void jvmStartupOptimizerArchive(ContainerImageConfig containerImageConfig
141141
}
142142

143143
producer.produce(
144-
new JvmStartupOptimizerArchiveContainerImageBuildItem(determineBaseJvmImage(jibConfig, compiledJavaVersion)));
144+
new JvmStartupOptimizerArchiveContainerImageBuildItem(determineBaseJvmImage(jibConfig, compiledJavaVersion),
145+
jibConfig.jvmAdditionalArguments()));
145146
}
146147

147148
private String determineBaseJvmImage(ContainerImageJibConfig jibConfig, CompiledJavaVersionBuildItem compiledJavaVersion) {

0 commit comments

Comments
 (0)