27
28
29 import com.oracle.tools.packager.StandardBundlerParam;
30 import com.oracle.tools.packager.BundlerParamInfo;
31 import com.oracle.tools.packager.StandardBundlerParam;
32 import com.oracle.tools.packager.RelativeFileSet;
33 import com.oracle.tools.packager.Log;
34
35 import java.io.ByteArrayOutputStream;
36 import java.io.File;
37 import java.io.FileInputStream;
38 import java.io.FileNotFoundException;
39 import java.io.IOException;
40 import java.io.InputStream;
41 import java.io.PrintWriter;
42 import java.io.StringReader;
43 import java.net.URI;
44 import java.nio.file.Files;
45 import java.nio.file.Path;
46 import java.nio.file.Paths;
47 import java.util.ArrayList;
48 import java.util.Arrays;
49 import java.util.Collection;
50 import java.util.Collections;
51 import java.util.EnumSet;
52 import java.util.HashMap;
53 import java.util.HashSet;
54 import java.util.Iterator;
55 import java.util.LinkedHashMap;
56 import java.util.LinkedHashSet;
57 import java.util.List;
58 import java.util.Map;
59 import java.util.Optional;
60 import java.util.Properties;
61 import java.util.ResourceBundle;
62 import java.util.Set;
63 import java.util.TreeSet;
64 import java.util.function.Supplier;
65 import java.util.logging.Level;
66 import java.util.logging.Logger;
260 }
261
262 //--------------------------------------------------------------------
263 // Modules
264
265 boolean detectModules = DETECT_MODULES.fetchFrom(params);
266
267 // The default for an unnamed jar is ALL_DEFAULT with the
268 // non-redistributable modules removed.
269 if (mainJarType == Module.ModuleType.UnnamedJar && !detectModules) {
270 addModules.add(ModuleHelper.ALL_RUNTIME);
271 }
272 else if (mainJarType == Module.ModuleType.Unknown || mainJarType == Module.ModuleType.ModularJar) {
273 String mainModule = getMainModule(params);
274 addModules.add(mainModule);
275
276 // Error if any of the srcfiles are modular jars.
277 Set<String> modularJars = getResourceFileJarList(params, Module.JarType.ModularJar);
278
279 if (!modularJars.isEmpty()) {
280 throw new Exception(String.format(I18N.getString("error.srcfiles.contain.modules"), modularJars.toString()));
281 }
282 }
283
284 ModuleHelper moduleHelper = new ModuleHelper(modulePath, addModules, limitModules);
285 addModules.addAll(moduleHelper.modules());
286
287 //--------------------------------------------------------------------
288 // Jars
289
290 // Bundle with minimum dependencies that unnamed jars depend on.
291 if (detectModules && !jars.isEmpty()) {
292 Log.info(String.format(I18N.getString("using.experimental.feature"), "--" + DETECT_MODULES.getID()));
293 Collection<String> detectedModules = JDepHelper.calculateModules(jars, modulePath);
294
295 if (!detectedModules.isEmpty()) {
296 addModules.addAll(detectedModules);
297 }
298 }
299
300 Log.info(String.format(I18N.getString("message.modules"), addModules.toString()));
301
302 AppRuntimeImageBuilder appRuntimeBuilder = new AppRuntimeImageBuilder();
303 appRuntimeBuilder.setOutputDir(outputDir);
304 appRuntimeBuilder.setModulePath(modulePath);
305 appRuntimeBuilder.setAddModules(addModules);
306 appRuntimeBuilder.setLimitModules(limitModules);
307 appRuntimeBuilder.setExcludeFileList(excludeFileList);
308 appRuntimeBuilder.setStripNativeCommands(stripNativeCommands);
309 appRuntimeBuilder.setUserArguments(userArguments);
310
311 appRuntimeBuilder.build();
312 imageBuilder.prepareApplicationFiles();
313 }
314
315 // Returns the path to the JDK modules in the user defined module path.
316 public static Path findPathOfModule(List<Path> modulePath, String moduleName) {
317 Path result = null;
318
319 for (Path path : modulePath) {
320 Path moduleNamePath = path.resolve(moduleName);
|
27
28
29 import com.oracle.tools.packager.StandardBundlerParam;
30 import com.oracle.tools.packager.BundlerParamInfo;
31 import com.oracle.tools.packager.StandardBundlerParam;
32 import com.oracle.tools.packager.RelativeFileSet;
33 import com.oracle.tools.packager.Log;
34
35 import java.io.ByteArrayOutputStream;
36 import java.io.File;
37 import java.io.FileInputStream;
38 import java.io.FileNotFoundException;
39 import java.io.IOException;
40 import java.io.InputStream;
41 import java.io.PrintWriter;
42 import java.io.StringReader;
43 import java.net.URI;
44 import java.nio.file.Files;
45 import java.nio.file.Path;
46 import java.nio.file.Paths;
47 import java.text.MessageFormat;
48 import java.util.ArrayList;
49 import java.util.Arrays;
50 import java.util.Collection;
51 import java.util.Collections;
52 import java.util.EnumSet;
53 import java.util.HashMap;
54 import java.util.HashSet;
55 import java.util.Iterator;
56 import java.util.LinkedHashMap;
57 import java.util.LinkedHashSet;
58 import java.util.List;
59 import java.util.Map;
60 import java.util.Optional;
61 import java.util.Properties;
62 import java.util.ResourceBundle;
63 import java.util.Set;
64 import java.util.TreeSet;
65 import java.util.function.Supplier;
66 import java.util.logging.Level;
67 import java.util.logging.Logger;
261 }
262
263 //--------------------------------------------------------------------
264 // Modules
265
266 boolean detectModules = DETECT_MODULES.fetchFrom(params);
267
268 // The default for an unnamed jar is ALL_DEFAULT with the
269 // non-redistributable modules removed.
270 if (mainJarType == Module.ModuleType.UnnamedJar && !detectModules) {
271 addModules.add(ModuleHelper.ALL_RUNTIME);
272 }
273 else if (mainJarType == Module.ModuleType.Unknown || mainJarType == Module.ModuleType.ModularJar) {
274 String mainModule = getMainModule(params);
275 addModules.add(mainModule);
276
277 // Error if any of the srcfiles are modular jars.
278 Set<String> modularJars = getResourceFileJarList(params, Module.JarType.ModularJar);
279
280 if (!modularJars.isEmpty()) {
281 throw new Exception(MessageFormat.format(I18N.getString("error.srcfiles.contain.modules"), modularJars.toString()));
282 }
283 }
284
285 ModuleHelper moduleHelper = new ModuleHelper(modulePath, addModules, limitModules);
286 addModules.addAll(moduleHelper.modules());
287
288 //--------------------------------------------------------------------
289 // Jars
290
291 // Bundle with minimum dependencies that unnamed jars depend on.
292 if (detectModules && !jars.isEmpty()) {
293 Log.info(MessageFormat.format(I18N.getString("using.experimental.feature"), "--" + DETECT_MODULES.getID()));
294 Collection<String> detectedModules = JDepHelper.calculateModules(jars, modulePath);
295
296 if (!detectedModules.isEmpty()) {
297 addModules.addAll(detectedModules);
298 }
299 }
300
301 Log.info(MessageFormat.format(I18N.getString("message.modules"), addModules.toString()));
302
303 AppRuntimeImageBuilder appRuntimeBuilder = new AppRuntimeImageBuilder();
304 appRuntimeBuilder.setOutputDir(outputDir);
305 appRuntimeBuilder.setModulePath(modulePath);
306 appRuntimeBuilder.setAddModules(addModules);
307 appRuntimeBuilder.setLimitModules(limitModules);
308 appRuntimeBuilder.setExcludeFileList(excludeFileList);
309 appRuntimeBuilder.setStripNativeCommands(stripNativeCommands);
310 appRuntimeBuilder.setUserArguments(userArguments);
311
312 appRuntimeBuilder.build();
313 imageBuilder.prepareApplicationFiles();
314 }
315
316 // Returns the path to the JDK modules in the user defined module path.
317 public static Path findPathOfModule(List<Path> modulePath, String moduleName) {
318 Path result = null;
319
320 for (Path path : modulePath) {
321 Path moduleNamePath = path.resolve(moduleName);
|