added compressionLevel
and bindServices
properties to the jlink task
All checks were successful
CI / build (push) Successful in 2m22s
All checks were successful
CI / build (push) Successful in 2m22s
This commit is contained in:
@@ -49,5 +49,8 @@ public class JlinkPlugin implements Plugin<Project> {
|
|||||||
zip.from(jlinTaskProvider);
|
zip.from(jlinTaskProvider);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tasks.named(JLINK_TASK_NAME, JlinkTask.class, jlinkTask -> {
|
||||||
|
jlinkTask.finalizedBy(jlinkZipTaskProvider);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -6,8 +6,8 @@ import org.gradle.api.file.Directory;
|
|||||||
import org.gradle.api.file.DirectoryProperty;
|
import org.gradle.api.file.DirectoryProperty;
|
||||||
import org.gradle.api.file.FileCollection;
|
import org.gradle.api.file.FileCollection;
|
||||||
import org.gradle.api.file.ProjectLayout;
|
import org.gradle.api.file.ProjectLayout;
|
||||||
import org.gradle.api.file.RegularFileProperty;
|
|
||||||
import org.gradle.api.logging.Logger;
|
import org.gradle.api.logging.Logger;
|
||||||
|
import org.gradle.api.logging.Logging;
|
||||||
import org.gradle.api.plugins.BasePluginExtension;
|
import org.gradle.api.plugins.BasePluginExtension;
|
||||||
import org.gradle.api.plugins.ExtensionContainer;
|
import org.gradle.api.plugins.ExtensionContainer;
|
||||||
import org.gradle.api.plugins.JavaApplication;
|
import org.gradle.api.plugins.JavaApplication;
|
||||||
@@ -21,7 +21,6 @@ import org.gradle.api.tasks.Input;
|
|||||||
import org.gradle.api.tasks.InputDirectory;
|
import org.gradle.api.tasks.InputDirectory;
|
||||||
import org.gradle.api.tasks.Optional;
|
import org.gradle.api.tasks.Optional;
|
||||||
import org.gradle.api.tasks.OutputDirectory;
|
import org.gradle.api.tasks.OutputDirectory;
|
||||||
import org.gradle.api.tasks.OutputFile;
|
|
||||||
import org.gradle.internal.jvm.JavaModuleDetector;
|
import org.gradle.internal.jvm.JavaModuleDetector;
|
||||||
import org.gradle.jvm.toolchain.JavaInstallationMetadata;
|
import org.gradle.jvm.toolchain.JavaInstallationMetadata;
|
||||||
import org.gradle.jvm.toolchain.JavaLauncher;
|
import org.gradle.jvm.toolchain.JavaLauncher;
|
||||||
@@ -60,15 +59,23 @@ public abstract class JlinkTask extends Exec {
|
|||||||
@Input
|
@Input
|
||||||
public abstract ListProperty<String> getAdditionalModules();
|
public abstract ListProperty<String> getAdditionalModules();
|
||||||
|
|
||||||
|
@Input
|
||||||
|
public abstract Property<Boolean> getBindServices();
|
||||||
|
|
||||||
|
@Input
|
||||||
|
@Optional
|
||||||
|
public abstract Property<Integer> getCompressionLevel();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected abstract JavaModuleDetector getJavaModuleDetector();
|
protected abstract JavaModuleDetector getJavaModuleDetector();
|
||||||
|
|
||||||
@OutputDirectory
|
@OutputDirectory
|
||||||
public abstract DirectoryProperty getOutputDir();
|
public abstract DirectoryProperty getOutputDir();
|
||||||
private final Logger logger;
|
|
||||||
|
private static final Logger log = Logging.getLogger(JlinkTask.class);
|
||||||
|
|
||||||
public JlinkTask() {
|
public JlinkTask() {
|
||||||
Project project = getProject();
|
Project project = getProject();
|
||||||
logger = project.getLogger();
|
|
||||||
setGroup(GRAALVM_TASK_GROUP);
|
setGroup(GRAALVM_TASK_GROUP);
|
||||||
setDescription(
|
setDescription(
|
||||||
"Generates a custom Java runtime image that contains only the platform modules" +
|
"Generates a custom Java runtime image that contains only the platform modules" +
|
||||||
@@ -90,6 +97,7 @@ public abstract class JlinkTask extends Exec {
|
|||||||
).orElseGet(() -> layout.dir(project.provider(() ->project.file(System.getProperty("java.home")))));
|
).orElseGet(() -> layout.dir(project.provider(() ->project.file(System.getProperty("java.home")))));
|
||||||
getGraalVmHome().convention(graalHomeDirectoryProvider);
|
getGraalVmHome().convention(graalHomeDirectoryProvider);
|
||||||
getAdditionalModules().convention(new ArrayList<>());
|
getAdditionalModules().convention(new ArrayList<>());
|
||||||
|
getBindServices().convention(false);
|
||||||
|
|
||||||
BasePluginExtension basePluginExtension =
|
BasePluginExtension basePluginExtension =
|
||||||
ext.getByType(BasePluginExtension.class);
|
ext.getByType(BasePluginExtension.class);
|
||||||
@@ -110,7 +118,13 @@ public abstract class JlinkTask extends Exec {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public Iterable<String> asArguments() {
|
public Iterable<String> asArguments() {
|
||||||
List<String> result = new ArrayList<>();
|
List<String> result = new ArrayList<>();
|
||||||
result.add("--compress=2");
|
final Property<Integer> compressionLevelProperty= getCompressionLevel();
|
||||||
|
if(compressionLevelProperty.isPresent()) {
|
||||||
|
result.add(String.format("--compress=zip-%d", compressionLevelProperty.get()));
|
||||||
|
}
|
||||||
|
if(getBindServices().get()) {
|
||||||
|
result.add("--bind-services");
|
||||||
|
}
|
||||||
JavaModuleDetector javaModuleDetector = getJavaModuleDetector();
|
JavaModuleDetector javaModuleDetector = getJavaModuleDetector();
|
||||||
FileCollection classpath = getClasspath().get();
|
FileCollection classpath = getClasspath().get();
|
||||||
FileCollection mp = javaModuleDetector.inferModulePath(true, classpath);
|
FileCollection mp = javaModuleDetector.inferModulePath(true, classpath);
|
||||||
@@ -131,8 +145,12 @@ public abstract class JlinkTask extends Exec {
|
|||||||
List<String> additionalModules = getAdditionalModules().get();
|
List<String> additionalModules = getAdditionalModules().get();
|
||||||
if(getMainModule().isPresent() || !additionalModules.isEmpty()) {
|
if(getMainModule().isPresent() || !additionalModules.isEmpty()) {
|
||||||
result.add("--add-modules");
|
result.add("--add-modules");
|
||||||
ofNullable(getMainModule().getOrElse(null)).ifPresent(result::add);
|
final List<String> modules2BeAdded = new ArrayList<>();
|
||||||
additionalModules.forEach(result::add);
|
ofNullable(getMainModule().getOrElse(null)).ifPresent(modules2BeAdded::add);
|
||||||
|
modules2BeAdded.addAll(additionalModules);
|
||||||
|
if(!modules2BeAdded.isEmpty()) {
|
||||||
|
result.add(String.join(",", modules2BeAdded));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Collections.unmodifiableList(result);
|
return Collections.unmodifiableList(result);
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
lys.catalog.version=2025.01.17
|
lys.catalog.version=2025.01.31
|
||||||
version.myGradlePlugins=2025.01.24
|
version.myGradlePlugins=2025.02.05
|
||||||
version.gradle=8.12
|
version.gradle=8.12
|
||||||
|
|
||||||
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
|
gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven
|
Reference in New Issue
Block a user