< prev index next >

src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java

Print this page




  37 import java.lang.module.ResolvedModule;
  38 import java.net.URI;
  39 import java.nio.ByteOrder;
  40 import java.nio.file.Files;
  41 import java.nio.file.Path;
  42 import java.nio.file.Paths;
  43 import java.util.*;
  44 import java.util.stream.Collectors;
  45 import java.util.stream.Stream;
  46 
  47 import jdk.tools.jlink.internal.TaskHelper.BadArgs;
  48 import static jdk.tools.jlink.internal.TaskHelper.JLINK_BUNDLE;
  49 import jdk.tools.jlink.internal.Jlink.JlinkConfiguration;
  50 import jdk.tools.jlink.internal.Jlink.PluginsConfiguration;
  51 import jdk.tools.jlink.internal.TaskHelper.Option;
  52 import jdk.tools.jlink.internal.TaskHelper.OptionsHelper;
  53 import jdk.tools.jlink.internal.ImagePluginStack.ImageProvider;
  54 import jdk.tools.jlink.plugin.PluginException;
  55 import jdk.tools.jlink.builder.DefaultImageBuilder;
  56 import jdk.tools.jlink.plugin.Plugin;
  57 import jdk.internal.module.Checks;
  58 import jdk.internal.module.ModulePath;
  59 import jdk.internal.module.ModuleResolution;
  60 
  61 /**
  62  * Implementation for the jlink tool.
  63  *
  64  * ## Should use jdk.joptsimple some day.
  65  */
  66 public class JlinkTask {
  67     static final boolean DEBUG = Boolean.getBoolean("jlink.debug");
  68 
  69     // jlink API ignores by default. Remove when signing is implemented.
  70     static final boolean IGNORE_SIGNING_DEFAULT = true;
  71 
  72     private static final TaskHelper taskHelper
  73             = new TaskHelper(JLINK_BUNDLE);
  74 
  75     private static final Option<?>[] recognizedOptions = {
  76         new Option<JlinkTask>(false, (task, opt, arg) -> {
  77             task.options.help = true;


 406         return Paths.get(uri);
 407     }
 408 
 409     private static ImageProvider createImageProvider(ModuleFinder finder,
 410                                                      Set<String> roots,
 411                                                      ByteOrder order,
 412                                                      Path retainModulesPath,
 413                                                      boolean ignoreSigning,
 414                                                      PrintWriter log)
 415             throws IOException
 416     {
 417         if (roots.isEmpty()) {
 418             throw new IllegalArgumentException("empty modules and limitmods");
 419         }
 420 
 421         Configuration cf = Configuration.empty()
 422                 .resolve(finder,
 423                          ModuleFinder.of(),
 424                          roots);
 425 
 426         // emit warning for modules that end with a digit
 427         cf.modules().stream()
 428             .map(ResolvedModule::name)
 429             .filter(mn -> !Checks.hasLegalModuleNameLastCharacter(mn))
 430             .forEach(mn -> System.err.println("WARNING: Module name \""
 431                                               + mn + "\" may soon be illegal"));
 432 
 433         // emit a warning for any incubating modules in the configuration
 434         if (log != null) {
 435             String im = cf.modules()
 436                           .stream()
 437                           .map(ResolvedModule::reference)
 438                           .filter(ModuleResolution::hasIncubatingWarning)
 439                           .map(ModuleReference::descriptor)
 440                           .map(ModuleDescriptor::name)
 441                           .collect(Collectors.joining(", "));
 442 
 443             if (!"".equals(im))
 444                 log.println("WARNING: Using incubator modules: " + im);
 445         }
 446 
 447         Map<String, Path> mods = cf.modules().stream()
 448             .collect(Collectors.toMap(ResolvedModule::name, JlinkTask::toPathLocation));
 449         return new ImageHelper(cf, mods, order, retainModulesPath, ignoreSigning);
 450     }
 451 
 452     /*




  37 import java.lang.module.ResolvedModule;
  38 import java.net.URI;
  39 import java.nio.ByteOrder;
  40 import java.nio.file.Files;
  41 import java.nio.file.Path;
  42 import java.nio.file.Paths;
  43 import java.util.*;
  44 import java.util.stream.Collectors;
  45 import java.util.stream.Stream;
  46 
  47 import jdk.tools.jlink.internal.TaskHelper.BadArgs;
  48 import static jdk.tools.jlink.internal.TaskHelper.JLINK_BUNDLE;
  49 import jdk.tools.jlink.internal.Jlink.JlinkConfiguration;
  50 import jdk.tools.jlink.internal.Jlink.PluginsConfiguration;
  51 import jdk.tools.jlink.internal.TaskHelper.Option;
  52 import jdk.tools.jlink.internal.TaskHelper.OptionsHelper;
  53 import jdk.tools.jlink.internal.ImagePluginStack.ImageProvider;
  54 import jdk.tools.jlink.plugin.PluginException;
  55 import jdk.tools.jlink.builder.DefaultImageBuilder;
  56 import jdk.tools.jlink.plugin.Plugin;

  57 import jdk.internal.module.ModulePath;
  58 import jdk.internal.module.ModuleResolution;
  59 
  60 /**
  61  * Implementation for the jlink tool.
  62  *
  63  * ## Should use jdk.joptsimple some day.
  64  */
  65 public class JlinkTask {
  66     static final boolean DEBUG = Boolean.getBoolean("jlink.debug");
  67 
  68     // jlink API ignores by default. Remove when signing is implemented.
  69     static final boolean IGNORE_SIGNING_DEFAULT = true;
  70 
  71     private static final TaskHelper taskHelper
  72             = new TaskHelper(JLINK_BUNDLE);
  73 
  74     private static final Option<?>[] recognizedOptions = {
  75         new Option<JlinkTask>(false, (task, opt, arg) -> {
  76             task.options.help = true;


 405         return Paths.get(uri);
 406     }
 407 
 408     private static ImageProvider createImageProvider(ModuleFinder finder,
 409                                                      Set<String> roots,
 410                                                      ByteOrder order,
 411                                                      Path retainModulesPath,
 412                                                      boolean ignoreSigning,
 413                                                      PrintWriter log)
 414             throws IOException
 415     {
 416         if (roots.isEmpty()) {
 417             throw new IllegalArgumentException("empty modules and limitmods");
 418         }
 419 
 420         Configuration cf = Configuration.empty()
 421                 .resolve(finder,
 422                          ModuleFinder.of(),
 423                          roots);
 424 







 425         // emit a warning for any incubating modules in the configuration
 426         if (log != null) {
 427             String im = cf.modules()
 428                           .stream()
 429                           .map(ResolvedModule::reference)
 430                           .filter(ModuleResolution::hasIncubatingWarning)
 431                           .map(ModuleReference::descriptor)
 432                           .map(ModuleDescriptor::name)
 433                           .collect(Collectors.joining(", "));
 434 
 435             if (!"".equals(im))
 436                 log.println("WARNING: Using incubator modules: " + im);
 437         }
 438 
 439         Map<String, Path> mods = cf.modules().stream()
 440             .collect(Collectors.toMap(ResolvedModule::name, JlinkTask::toPathLocation));
 441         return new ImageHelper(cf, mods, order, retainModulesPath, ignoreSigning);
 442     }
 443 
 444     /*


< prev index next >