8146721: FileCopierPlugin should not create fake module
Reviewed-by: jlaskey, alanb
This commit is contained in:
parent
4809e92cec
commit
70ad571a32
@ -56,7 +56,6 @@ import java.util.Optional;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import jdk.tools.jlink.internal.BasicImageWriter;
|
||||
import jdk.tools.jlink.internal.plugins.FileCopierPlugin;
|
||||
import jdk.tools.jlink.internal.plugins.FileCopierPlugin.SymImageFile;
|
||||
import jdk.tools.jlink.internal.ExecutableImage;
|
||||
import jdk.tools.jlink.plugin.ResourcePool;
|
||||
@ -184,10 +183,6 @@ public final class DefaultImageBuilder implements ImageBuilder {
|
||||
files.moduleView().modules().forEach(m -> {
|
||||
// Only add modules that contain packages
|
||||
if (!m.packages().isEmpty()) {
|
||||
// Skip the fake module used by FileCopierPlugin when copying files.
|
||||
if (m.name().equals(FileCopierPlugin.FAKE_MODULE)) {
|
||||
return;
|
||||
}
|
||||
modules.add(m.name());
|
||||
}
|
||||
});
|
||||
|
@ -213,7 +213,6 @@ public class ResourcePoolManager {
|
||||
|
||||
private final Map<String, ResourcePoolEntry> resources = new LinkedHashMap<>();
|
||||
private final Map<String, ResourcePoolModule> modules = new LinkedHashMap<>();
|
||||
private final ResourcePoolModuleImpl fileCopierModule = new ResourcePoolModuleImpl(FileCopierPlugin.FAKE_MODULE);
|
||||
private final ByteOrder order;
|
||||
private final StringTable table;
|
||||
private final ResourcePool poolImpl;
|
||||
@ -272,11 +271,6 @@ public class ResourcePoolManager {
|
||||
}
|
||||
String modulename = data.moduleName();
|
||||
ResourcePoolModuleImpl m = (ResourcePoolModuleImpl)modules.get(modulename);
|
||||
// ## TODO: FileCopierPlugin should not add content to a module
|
||||
// FAKE_MODULE is not really a module to be added in the image
|
||||
if (FileCopierPlugin.FAKE_MODULE.equals(modulename)) {
|
||||
m = fileCopierModule;
|
||||
}
|
||||
if (m == null) {
|
||||
m = new ResourcePoolModuleImpl(modulename);
|
||||
modules.put(modulename, m);
|
||||
|
@ -58,8 +58,6 @@ public class FileCopierPlugin implements Plugin {
|
||||
Path source;
|
||||
Path target;
|
||||
}
|
||||
public static final String FAKE_MODULE = "$jlink-file-copier";
|
||||
|
||||
private final List<CopiedFile> files = new ArrayList<>();
|
||||
|
||||
/**
|
||||
@ -159,7 +157,7 @@ public class FileCopierPlugin implements Plugin {
|
||||
Objects.requireNonNull(file);
|
||||
Objects.requireNonNull(path);
|
||||
ResourcePoolEntry impl = ResourcePoolEntry.create(
|
||||
"/" + FAKE_MODULE + "/other/" + path,
|
||||
"/java.base/other/" + path,
|
||||
ResourcePoolEntry.Type.OTHER, file);
|
||||
try {
|
||||
pool.add(impl);
|
||||
|
@ -41,6 +41,7 @@ import jdk.tools.jlink.internal.ResourcePoolManager;
|
||||
import jdk.tools.jlink.builder.DefaultImageBuilder;
|
||||
|
||||
import jdk.tools.jlink.internal.plugins.FileCopierPlugin;
|
||||
import jdk.tools.jlink.plugin.PluginException;
|
||||
import jdk.tools.jlink.plugin.ResourcePoolEntry;
|
||||
import jdk.tools.jlink.plugin.ResourcePool;
|
||||
|
||||
@ -103,7 +104,18 @@ public class FileCopierPluginTest {
|
||||
});
|
||||
Path root = new File(".").toPath();
|
||||
DefaultImageBuilder imgbuilder = new DefaultImageBuilder(root);
|
||||
imgbuilder.storeFiles(pool);
|
||||
try {
|
||||
imgbuilder.storeFiles(pool);
|
||||
} catch (PluginException e) {
|
||||
// We didn't add any .class resource of the java.base module!
|
||||
// This cannot happen in non-testing scenario as java.base module
|
||||
// is minimum mandatory module in a .jimage. jlink depends on java.base
|
||||
// to generate 'release' file. If the current exception came from that
|
||||
// part of the code, then it is okay.
|
||||
if (!e.getMessage().contains("No module-info for java.base module")) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
if (lic.exists()) {
|
||||
File license = new File(root.toFile(), "LICENSE");
|
||||
|
Loading…
Reference in New Issue
Block a user