< prev index next >
src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java
Print this page
@@ -38,10 +38,11 @@
import java.nio.ByteOrder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
+import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import jdk.tools.jlink.internal.TaskHelper.BadArgs;
import static jdk.tools.jlink.internal.TaskHelper.JLINK_BUNDLE;
@@ -52,10 +53,11 @@
import jdk.tools.jlink.internal.ImagePluginStack.ImageProvider;
import jdk.tools.jlink.plugin.PluginException;
import jdk.tools.jlink.builder.DefaultImageBuilder;
import jdk.tools.jlink.plugin.Plugin;
import jdk.internal.misc.SharedSecrets;
+import jdk.internal.module.WarnIfResolvedReason;
/**
* Implementation for the jlink tool.
*
* ## Should use jdk.joptsimple some day.
@@ -258,11 +260,12 @@
ImageProvider imageProvider =
createImageProvider(finder,
config.getModules(),
config.getByteOrder(),
null,
- IGNORE_SIGNING_DEFAULT);
+ IGNORE_SIGNING_DEFAULT,
+ null);
// Then create the Plugin Stack
ImagePluginStack stack = ImagePluginConfiguration.parseConfiguration(plugins);
//Ask the stack to proceed;
@@ -326,11 +329,12 @@
// First create the image provider
ImageProvider imageProvider = createImageProvider(finder,
roots,
options.endian,
options.packagedModulesPath,
- options.ignoreSigning);
+ options.ignoreSigning,
+ log);
// Then create the Plugin Stack
ImagePluginStack stack = ImagePluginConfiguration.
parseConfiguration(taskHelper.getPluginsConfig(options.output));
@@ -380,15 +384,20 @@
throw new InternalError(m + " does not have a location");
URI uri = ouri.get();
return Paths.get(uri);
}
+ private static final Predicate<ModuleDescriptor> hasIncubatorWarning = md ->
+ SharedSecrets.getJavaLangModuleAccess().warnIfResolvedReason(md)
+ == WarnIfResolvedReason.INCUBATING;
+
private static ImageProvider createImageProvider(ModuleFinder finder,
Set<String> roots,
ByteOrder order,
Path retainModulesPath,
- boolean ignoreSigning)
+ boolean ignoreSigning,
+ PrintWriter log)
throws IOException
{
if (roots.isEmpty()) {
throw new IllegalArgumentException("empty modules and limitmods");
}
@@ -396,10 +405,24 @@
Configuration cf = Configuration.empty()
.resolveRequires(finder,
ModuleFinder.of(),
roots);
+ // issue a warning for any incubating modules in the configuration
+ if (log != null) {
+ String incubatingModules = cf.modules()
+ .stream()
+ .map(ResolvedModule::reference)
+ .map(ModuleReference::descriptor)
+ .filter(hasIncubatorWarning)
+ .map(ModuleDescriptor::name)
+ .collect(Collectors.joining(", "));
+
+ if (!"".equals(incubatingModules))
+ log.println("WARNING: using incubating module(s): " + incubatingModules);
+ }
+
Map<String, Path> mods = cf.modules().stream()
.collect(Collectors.toMap(ResolvedModule::name, JlinkTask::toPathLocation));
return new ImageHelper(cf, mods, order, retainModulesPath, ignoreSigning);
}
< prev index next >