< prev index next >
src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Jlink.java
Print this page
@@ -25,11 +25,13 @@
package jdk.tools.jlink.internal;
import java.lang.module.Configuration;
import java.lang.module.ModuleFinder;
import java.nio.ByteOrder;
+import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -144,48 +146,31 @@
/**
* Jlink configuration. Instances of this class are used to configure jlink.
*/
public static final class JlinkConfiguration {
- private final List<Path> modulepaths;
private final Path output;
private final Set<String> modules;
- private final Set<String> limitmods;
private final ByteOrder endian;
private final ModuleFinder finder;
/**
* jlink configuration,
*
* @param output Output directory, must not exist.
- * @param modulepaths Modules paths
* @param modules The possibly-empty set of root modules to resolve
- * @param limitmods Limit the universe of observable modules
* @param endian Jimage byte order. Native order by default
+ * @param finder the ModuleFinder for this configuration
*/
public JlinkConfiguration(Path output,
- List<Path> modulepaths,
Set<String> modules,
- Set<String> limitmods,
- ByteOrder endian) {
- if (Objects.requireNonNull(modulepaths).isEmpty()) {
- throw new IllegalArgumentException("Empty module path");
- }
-
+ ByteOrder endian,
+ ModuleFinder finder) {
this.output = output;
- this.modulepaths = modulepaths;
this.modules = Objects.requireNonNull(modules);
- this.limitmods = Objects.requireNonNull(limitmods);
this.endian = Objects.requireNonNull(endian);
- this.finder = moduleFinder();
- }
-
- /**
- * @return the modulepaths
- */
- public List<Path> getModulepaths() {
- return modulepaths;
+ this.finder = finder;
}
/**
* @return the byte ordering
*/
@@ -206,17 +191,10 @@
public Set<String> getModules() {
return modules;
}
/**
- * @return the limitmods
- */
- public Set<String> getLimitmods() {
- return limitmods;
- }
-
- /**
* Returns {@link ModuleFinder} that finds all observable modules
* for this jlink configuration.
*/
public ModuleFinder finder() {
return finder;
@@ -242,41 +220,20 @@
return Configuration.empty().resolve(finder,
ModuleFinder.of(),
modules);
}
- private ModuleFinder moduleFinder() {
- Path[] entries = modulepaths.toArray(new Path[0]);
- ModuleFinder finder = ModulePath.of(Runtime.version(), true, entries);
- if (!limitmods.isEmpty()) {
- finder = JlinkTask.limitFinder(finder, limitmods, modules);
- }
- return finder;
- }
-
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("output=").append(output).append("\n");
- StringBuilder pathsBuilder = new StringBuilder();
- for (Path p : modulepaths) {
- pathsBuilder.append(p).append(",");
- }
- builder.append("modulepaths=").append(pathsBuilder).append("\n");
-
StringBuilder modsBuilder = new StringBuilder();
for (String p : modules) {
modsBuilder.append(p).append(",");
}
builder.append("modules=").append(modsBuilder).append("\n");
-
- StringBuilder limitsBuilder = new StringBuilder();
- for (String p : limitmods) {
- limitsBuilder.append(p).append(",");
- }
- builder.append("limitmodules=").append(limitsBuilder).append("\n");
builder.append("endian=").append(endian).append("\n");
return builder.toString();
}
}
< prev index next >