Skip to content

Conversation

Copy link

Copilot AI commented Dec 18, 2025

The slf4j-jdk14 binding was declared in the parent POM at compile scope, forcing all consumers to explicitly exclude it when using alternative logging frameworks (Logback, Log4j2, etc.).

Changes

  • schemacrawler-parent/pom.xml: Removed slf4j-jdk14 dependency
  • schemacrawler-commandline/pom.xml: Added slf4j-jdk14 with runtime scope
  • schemacrawler-distrib/pom.xml: Added slf4j-jdk14 with runtime scope

Impact

Library consumers no longer receive slf4j-jdk14 as a transitive dependency. The binding is only included in executable modules at runtime where it's needed.

Before:

<dependency>
    <groupId>us.fatehi</groupId>
    <artifactId>schemacrawler</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
        </exclusion>
    </exclusions>
</dependency>

After:

<dependency>
    <groupId>us.fatehi</groupId>
    <artifactId>schemacrawler</artifactId>
</dependency>

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • hsqldb.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • jdbc.postgresql.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • opensource.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • www-03.ibm.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • www.apache.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • www.gnu.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • www.ibm.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • www.mozilla.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • www.opensource.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)
  • www.oracle.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -Xmx2g -Xms1g -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/SchemaCrawler/SchemaCrawler org.codehaus.plexus.classworlds.launcher.Launcher clean install -DskipTests -pl schemacrawler-commandline -am (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Remove slf4j-jdk14 from all modules as transitive dependency</issue_title>
<issue_description>### Description

Hi @sualeh,

To avoid multiple logging bindings, slf4j-jdk14 shouldn't be included in all dependencies.

Currently, every module import requires an explicit exclusion for slf4j-jdk14. For example, in assertj-schemacrawler I exclude it or in tests with Spring Boot (where Logback is the default) and in custom libraries that are included in applications using other logging systems.

I recommend moving the dependency from the parent module to the product module and resolve the dependency from each module to the product. The dependency from the module to the product are somewhat unexpected, since the product already contains near all classes as shaded.

Greetings,
Ben

How to Reproduce

No response

Relevant log output

SchemaCrawler Version

17.1.7

Java Version

21

Operating System and Version

Windows 11

Relational Database System and Version

DB2LUW 11.5.9

JDBC Driver and Version

4.32.28</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: sualeh <36505153+sualeh@users.noreply.github.com>
Copilot AI changed the title [WIP] Remove slf4j-jdk14 as transitive dependency from all modules Remove slf4j-jdk14 as transitive dependency from library modules Dec 18, 2025
Copilot AI requested a review from sualeh December 18, 2025 17:25
@sualeh sualeh marked this pull request as ready for review December 19, 2025 20:07
@sualeh
Copy link
Collaborator

sualeh commented Dec 20, 2025

@dependabot rebase

@sualeh sualeh closed this Dec 30, 2025
@sualeh sualeh deleted the copilot/remove-slf4j-jdk14-dependency branch December 30, 2025 19:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove slf4j-jdk14 from all modules as transitive dependency

2 participants