< prev index next >
src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java
Print this page
@@ -107,10 +107,31 @@
new Option<JlinkTask>(true, (task, opt, arg) -> {
Path path = Paths.get(arg);
task.options.output = path;
}, "--output"),
new Option<JlinkTask>(true, (task, opt, arg) -> {
+ String[] values = arg.split("=");
+ // check values
+ if (values.length != 2 || values[0].isEmpty() || values[1].isEmpty()) {
+ throw taskHelper.newBadArgs("err.launcher.value.format", arg);
+ } else {
+ String commandName = values[0];
+ String moduleAndMain = values[1];
+ int idx = moduleAndMain.indexOf("/");
+ if (idx != -1) {
+ if (moduleAndMain.substring(0, idx).isEmpty()) {
+ throw taskHelper.newBadArgs("err.launcher.module.name.empty", arg);
+ }
+
+ if (moduleAndMain.substring(idx + 1).isEmpty()) {
+ throw taskHelper.newBadArgs("err.launcher.main.class.empty", arg);
+ }
+ }
+ task.options.launchers.put(commandName, moduleAndMain);
+ }
+ }, "--launcher"),
+ new Option<JlinkTask>(true, (task, opt, arg) -> {
if ("little".equals(arg)) {
task.options.endian = ByteOrder.LITTLE_ENDIAN;
} else if ("big".equals(arg)) {
task.options.endian = ByteOrder.BIG_ENDIAN;
} else {
@@ -166,10 +187,11 @@
boolean fullVersion;
final List<Path> modulePath = new ArrayList<>();
final Set<String> limitMods = new HashSet<>();
final Set<String> addMods = new HashSet<>();
Path output;
+ final Map<String, String> launchers = new HashMap<>();
Path packagedModulesPath;
ByteOrder endian = ByteOrder.nativeOrder();
boolean ignoreSigning = false;
}
@@ -282,11 +304,11 @@
stack.operate((ImagePluginStack stack1) -> image);
}
private void postProcessOnly(Path existingImage) throws Exception {
- PluginsConfiguration config = taskHelper.getPluginsConfig(null);
+ PluginsConfiguration config = taskHelper.getPluginsConfig(null, null);
ExecutableImage img = DefaultImageBuilder.getExecutableImage(existingImage);
if (img == null) {
throw taskHelper.newBadArgs("err.existing.image.invalid");
}
postProcessImage(img, config.getPlugins());
@@ -330,11 +352,11 @@
options.packagedModulesPath,
options.ignoreSigning);
// Then create the Plugin Stack
ImagePluginStack stack = ImagePluginConfiguration.
- parseConfiguration(taskHelper.getPluginsConfig(options.output));
+ parseConfiguration(taskHelper.getPluginsConfig(options.output, options.launchers));
//Ask the stack to proceed
stack.operate(imageProvider);
}
< prev index next >