in initializer-generator/src/main/java/io/spring/start/site/extension/dependency/springnative/SpringNativeMavenBuildCustomizer.java [44:91]
public void customize(MavenBuild build) {
Dependency dependency = build.dependencies().get("native");
String springNativeVersion = dependency.getVersion().getValue();
boolean hasTestSupport = !NATIVE_NO_TEST_SUPPORT.match(VersionParser.DEFAULT.parse(springNativeVersion));
boolean latestNativeBuildTools = NATIVE_011.match(VersionParser.DEFAULT.parse(springNativeVersion));
// Native build tools
String nativeBuildToolsVersion = SpringNativeBuildtoolsVersionResolver.resolve(springNativeVersion);
if (nativeBuildToolsVersion != null) {
build.properties().property("repackage.classifier", "");
}
// Expose a property
build.properties().version(VersionProperty.of("spring-native.version"), springNativeVersion);
// Update dependency to reuse the property
build.dependencies().add("native",
Dependency.from(dependency).version(VersionReference.ofProperty("spring-native.version")));
// AOT plugin
build.plugins().add("org.springframework.experimental", "spring-aot-maven-plugin", (plugin) -> {
plugin.version("${spring-native.version}");
if (hasTestSupport) {
plugin.execution("test-generate", (execution) -> execution.goal("test-generate"));
}
plugin.execution("generate", (execution) -> execution.goal("generate"));
});
// Spring Boot plugin
build.plugins().add("org.springframework.boot", "spring-boot-maven-plugin",
(plugin) -> plugin.configuration((configuration) -> {
if (nativeBuildToolsVersion != null) {
configuration.add("classifier", "${repackage.classifier}");
}
configuration.add("image", (image) -> {
image.add("builder", "paketobuildpacks/builder:tiny");
image.add("env", (env) -> env.add("BP_NATIVE_IMAGE", "true"));
});
}));
if (build.dependencies().has("data-jpa")) {
configureHibernateEnhancePlugin(build);
}
if (nativeBuildToolsVersion != null) {
configureNativeProfile(build, hasTestSupport, latestNativeBuildTools, nativeBuildToolsVersion);
}
}