77
88import static java .util .stream .Collectors .joining ;
99import 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
1313import java .io .File ;
1414import java .io .IOException ;
2323import java .util .Set ;
2424import 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 .*;
3227import org .jboss .modules .filter .PathFilters ;
3328
3429import io .jooby .run .JoobyRun ;
@@ -73,15 +68,15 @@ 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
8175 for (String dependency : dependencies ) {
76+ var filter = PathFilters .acceptAll ();
8277 builder .addDependency (
8378 new ModuleDependencySpecBuilder ()
84- .setImportFilter (PathFilters . acceptAll () )
79+ .setImportFilter (filter )
8580 .setExportFilter (PathFilters .getMetaInfServicesFilter ())
8681 .setName (dependency )
8782 .setOptional (false )
@@ -90,7 +85,7 @@ public static ModuleSpec createModuleSpec(
9085 return builder .create ();
9186 }
9287
93- private static ModuleSpec .Builder newModule (String name , Set <Path > resources ) {
88+ private ModuleSpec .Builder newModule (String name , Set <Path > resources ) {
9489 try {
9590 ModuleSpec .Builder builder = ModuleSpec .build (name );
9691 // Add all JDK classes
@@ -102,8 +97,20 @@ private static ModuleSpec.Builder newModule(String name, Set<Path> resources) {
10297
10398 for (Path path : resources ) {
10499 if (Files .isDirectory (path )) {
105- builder .addResourceRoot (
106- ResourceLoaderSpec .createResourceLoaderSpec (createPathResourceLoader (path )));
100+ var resourceLoader = createPathResourceLoader (path );
101+ if (main .equals (name )) {
102+ resourceLoader =
103+ createFilteredResourceLoader (
104+ not (
105+ it ->
106+ // remove duplicated log configuration
107+ (it .startsWith ("logback" ) || it .startsWith ("log4j" ))
108+ && it .endsWith (".xml" )
109+ // remove duplicated configuration
110+ || (it .startsWith ("application" ) && it .endsWith (".conf" ))),
111+ resourceLoader );
112+ }
113+ builder .addResourceRoot (ResourceLoaderSpec .createResourceLoaderSpec (resourceLoader ));
107114 } else {
108115 builder .addResourceRoot (
109116 createResourceLoaderSpec (createJarResourceLoader (new JarFile (path .toFile ()))));
@@ -117,7 +124,7 @@ private static ModuleSpec.Builder newModule(String name, Set<Path> resources) {
117124
118125 @ Override
119126 public String toString () {
120- return "classes : "
127+ return "main : "
121128 + classes .stream ().map (Path ::toString ).collect (joining (File .pathSeparator ))
122129 + "\n resources: "
123130 + resources .stream ().map (Path ::toString ).collect (joining (File .pathSeparator ))
0 commit comments