Support image building with Maven and war packaging

This commit updates the Maven image building goal to support building
images from executable and non-executable war files.

Fixes gh-23823
This commit is contained in:
Scott Frederick
2021-02-24 14:49:22 -06:00
parent a80c4ad38d
commit 4be04b0ea2
5 changed files with 41 additions and 18 deletions

View File

@@ -218,23 +218,26 @@ public class BuildImageMojo extends AbstractPackagerMojo {
}
private TarArchive getApplicationContent(Owner owner, Libraries libraries) {
ImagePackager packager = getConfiguredPackager(() -> new ImagePackager(getJarFile()));
ImagePackager packager = getConfiguredPackager(() -> new ImagePackager(getArchiveFile()));
return new PackagedTarArchive(owner, libraries, packager);
}
private File getJarFile() {
private File getArchiveFile() {
// We can use 'project.getArtifact().getFile()' because that was done in a
// forked lifecycle and is now null
StringBuilder name = new StringBuilder(this.finalName);
if (StringUtils.hasText(this.classifier)) {
name.append("-").append(this.classifier);
}
name.append(".jar");
File jarFile = new File(this.sourceDirectory, name.toString());
if (!jarFile.exists()) {
throw new IllegalStateException("Executable jar file required for building image");
File archiveFile = new File(this.sourceDirectory, name.toString() + ".jar");
if (archiveFile.exists()) {
return archiveFile;
}
return jarFile;
archiveFile = new File(this.sourceDirectory, name.toString() + ".war");
if (archiveFile.exists()) {
return archiveFile;
}
throw new IllegalStateException("A jar or war file is required for building image");
}
private BuildRequest customize(BuildRequest request) {