Skip to content

Commit

Permalink
[jlink] handle archiveFormat property on targetJdks. Resolves #580
Browse files Browse the repository at this point in the history
  • Loading branch information
aalmiray committed Dec 8, 2021
1 parent 70dfddb commit 54b2407
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 9 deletions.
Expand Up @@ -18,6 +18,7 @@
package org.jreleaser.assemblers;

import org.jreleaser.bundle.RB;
import org.jreleaser.model.Archive;
import org.jreleaser.model.Artifact;
import org.jreleaser.model.Glob;
import org.jreleaser.model.JReleaserContext;
Expand Down Expand Up @@ -105,15 +106,22 @@ protected void doAssemble(Map<String, Object> props) throws AssemblerProcessingE
}
context.getLogger().debug(RB.$("assembler.module.names"), moduleNames);

Artifact image = jlink(assembleDirectory, jdkPath, targetJdk, moduleNames, imageName);
String str = targetJdk.getExtraProperties()
.getOrDefault("archiveFormat", "ZIP")
.toString();
Archive.Format archiveFormat = Archive.Format.of(str);

Artifact image = jlink(assembleDirectory, jdkPath, targetJdk, moduleNames, imageName, archiveFormat);
if (isNotBlank(assembler.getImageNameTransform())) {
image.setTransform(assembler.getResolvedImageNameTransform(context) + "-" + platformReplaced + ".zip");
image.setTransform(assembler.getResolvedImageNameTransform(context) + "-" +
platformReplaced + "."+
archiveFormat.extension());
image.getEffectivePath(context);
}
}
}

private Artifact jlink(Path assembleDirectory, Path jdkPath, Artifact targetJdk, Set<String> moduleNames, String imageName) throws AssemblerProcessingException {
private Artifact jlink(Path assembleDirectory, Path jdkPath, Artifact targetJdk, Set<String> moduleNames, String imageName, Archive.Format archiveFormat) throws AssemblerProcessingException {
String platform = targetJdk.getPlatform();
String platformReplaced = assembler.getPlatform().applyReplacements(platform);
String finalImageName = imageName + "-" + platformReplaced;
Expand Down Expand Up @@ -200,14 +208,28 @@ private Artifact jlink(Path assembleDirectory, Path jdkPath, Artifact targetJdk,
}

try {
Path imageZip = assembleDirectory.resolve(finalImageName + ".zip");
Path imageArchive = assembleDirectory.resolve(finalImageName + "." + archiveFormat.extension());
copyFiles(context, imageDirectory);
copyFileSets(context, imageDirectory);
FileUtils.zip(workDirectory, imageZip);

context.getLogger().debug("- {}", imageZip.getFileName());
switch (archiveFormat) {
case ZIP:
FileUtils.zip(workDirectory, imageArchive);
break;
case TAR:
FileUtils.tar(workDirectory, imageArchive);
break;
case TGZ:
case TAR_GZ:
FileUtils.tgz(workDirectory, imageArchive);
break;
case TAR_BZ2:
FileUtils.bz2(workDirectory, imageArchive);
}

context.getLogger().debug("- {}", imageArchive.getFileName());

return Artifact.of(imageZip, platform);
return Artifact.of(imageArchive, platform);
} catch (IOException e) {
throw new AssemblerProcessingException(RB.$("ERROR_unexpected_error"), e);
}
Expand Down
Expand Up @@ -18,6 +18,7 @@
package org.jreleaser.model.validation;

import org.jreleaser.bundle.RB;
import org.jreleaser.model.Archive;
import org.jreleaser.model.Artifact;
import org.jreleaser.model.JReleaserContext;
import org.jreleaser.model.Jlink;
Expand Down Expand Up @@ -53,9 +54,13 @@ private static void resolveJlinkOutputs(JReleaserContext context, Jlink jlink, E

String platform = targetJdk.getPlatform();
String platformReplaced = jlink.getPlatform().applyReplacements(platform);
String str = targetJdk.getExtraProperties()
.getOrDefault("archiveFormat", "ZIP")
.toString();
Archive.Format archiveFormat = Archive.Format.of(str);

Path image = baseOutputDirectory
.resolve(imageName + "-" + platformReplaced + ".zip")
.resolve(imageName + "-" + platformReplaced + "." + archiveFormat.extension())
.toAbsolutePath();

if (!Files.exists(image)) {
Expand All @@ -66,7 +71,9 @@ private static void resolveJlinkOutputs(JReleaserContext context, Jlink jlink, E
artifact.setExtraProperties(jlink.getExtraProperties());
artifact.activate();
if (isNotBlank(jlink.getImageNameTransform())) {
artifact.setTransform(jlink.getResolvedImageNameTransform(context) + "-" + platformReplaced + ".zip");
artifact.setTransform(jlink.getResolvedImageNameTransform(context) + "-" +
platformReplaced + "." +
archiveFormat.extension());
artifact.getEffectivePath(context);
}
jlink.addOutput(artifact);
Expand Down
Expand Up @@ -162,6 +162,7 @@ public static void bz2(Path src, Path dest) throws IOException {
}

private static void tar(Path src, TarArchiveOutputStream out) throws IOException {
out.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX);
Files.walkFileTree(src, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {
Expand Down

0 comments on commit 54b2407

Please sign in to comment.