Skip to content

Commit a7a3366

Browse files
committed
jooby-run: Resource [logback.xml] occurs multiple times on the classpath
- fix #3793
1 parent b9fdae4 commit a7a3366

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

modules/jooby-run/src/main/java/io/jooby/internal/run/JoobyModuleFinder.java

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import static java.util.stream.Collectors.joining;
99
import static org.jboss.modules.ResourceLoaderSpec.createResourceLoaderSpec;
10-
import static org.jboss.modules.ResourceLoaders.createJarResourceLoader;
11-
import static org.jboss.modules.ResourceLoaders.createPathResourceLoader;
10+
import static org.jboss.modules.ResourceLoaders.*;
11+
import static org.jboss.modules.filter.PathFilters.not;
1212

1313
import java.io.File;
1414
import java.io.IOException;
@@ -23,12 +23,7 @@
2323
import java.util.Set;
2424
import java.util.jar.JarFile;
2525

26-
import org.jboss.modules.DependencySpec;
27-
import org.jboss.modules.ModuleDependencySpecBuilder;
28-
import org.jboss.modules.ModuleFinder;
29-
import org.jboss.modules.ModuleSpec;
30-
import org.jboss.modules.PathUtils;
31-
import org.jboss.modules.ResourceLoaderSpec;
26+
import org.jboss.modules.*;
3227
import org.jboss.modules.filter.PathFilters;
3328

3429
import io.jooby.run.JoobyRun;
@@ -73,8 +68,7 @@ private static Path joobyRunHook(Class loader) {
7368
}
7469
}
7570

76-
public static ModuleSpec createModuleSpec(
77-
String name, Set<Path> resources, Set<String> dependencies) {
71+
public ModuleSpec createModuleSpec(String name, Set<Path> resources, Set<String> dependencies) {
7872
ModuleSpec.Builder builder = newModule(name, resources);
7973

8074
// dependencies
@@ -90,7 +84,7 @@ public static ModuleSpec createModuleSpec(
9084
return builder.create();
9185
}
9286

93-
private static ModuleSpec.Builder newModule(String name, Set<Path> resources) {
87+
private ModuleSpec.Builder newModule(String name, Set<Path> resources) {
9488
try {
9589
ModuleSpec.Builder builder = ModuleSpec.build(name);
9690
// Add all JDK classes
@@ -102,8 +96,20 @@ private static ModuleSpec.Builder newModule(String name, Set<Path> resources) {
10296

10397
for (Path path : resources) {
10498
if (Files.isDirectory(path)) {
105-
builder.addResourceRoot(
106-
ResourceLoaderSpec.createResourceLoaderSpec(createPathResourceLoader(path)));
99+
var resourceLoader = createPathResourceLoader(path);
100+
if (main.equals(name)) {
101+
resourceLoader =
102+
createFilteredResourceLoader(
103+
not(
104+
it ->
105+
// remove duplicated log configuration
106+
(it.startsWith("logback") || it.startsWith("log4j"))
107+
&& it.endsWith(".xml")
108+
// remove duplicated configuration
109+
|| (it.startsWith("application") && it.endsWith(".conf"))),
110+
resourceLoader);
111+
}
112+
builder.addResourceRoot(ResourceLoaderSpec.createResourceLoaderSpec(resourceLoader));
107113
} else {
108114
builder.addResourceRoot(
109115
createResourceLoaderSpec(createJarResourceLoader(new JarFile(path.toFile()))));
@@ -117,7 +123,7 @@ private static ModuleSpec.Builder newModule(String name, Set<Path> resources) {
117123

118124
@Override
119125
public String toString() {
120-
return "classes: "
126+
return "main: "
121127
+ classes.stream().map(Path::toString).collect(joining(File.pathSeparator))
122128
+ "\nresources: "
123129
+ resources.stream().map(Path::toString).collect(joining(File.pathSeparator))

modules/jooby-run/src/main/java/io/jooby/internal/run/JoobyMultiModuleFinder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616
/**
1717
* The new class loader since 3.x. It creates 3 modules with their own classloader:
1818
*
19-
* <p>- classes: project classes - resources: project resources - jars: project dependencies
19+
* <ul>
20+
* <li>classes: project classes
21+
* <li>resources: project resources
22+
* <li>jars: project dependencies
23+
* </ul>
2024
*
2125
* <p>This approach reduce memory footprint allowing fast restart.
2226
*/

0 commit comments

Comments
 (0)