The top-level pom.xml and integration/pom.xml specify a dependency on slf4j-jcl with default (compile) scope. The point of slf4j is to allow libraries to work with any underlying logging system, leaving the choice up to the application programmer. If my application uses jcl-over-slf4j, and also uses your library which uses slf4j-jcl, initialization fails because there's a logging loop.
core/pom.xml and math/pom.xml specify slf4j-jcl with test scope only. That's fine, because dependencies with test scope aren't propagated to dependents.