I've added a run.sh script to the repos to better reproduce the problem.
$ mvn clean package
$ ./run.sh
+ cp /home/someone/.m2/repository/org/slf4j/slf4j-api/1.8.0-beta1/slf4j-api-1.8.0-beta1.jar target
+ cp /home/someone/.m2/repository/ch/qos/logback/logback-classic/1.3.0-alpha2/logback-classic-1.3.0-alpha2.jar target
+ cp /home/someone/.m2/repository/ch/qos/logback/logback-core/1.3.0-alpha2/logback-core-1.3.0-alpha2.jar target
+ rm -rf target/classes
+ java --module-path target --module com.io7m.bugs.logback/com.io7m.bugs.logback.Main
Exception in thread "main" java.util.ServiceConfigurationError: ch.qos.logback.classic.spi.Configurator: module ch.qos.logback.classic does not declare `uses`
at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:588)
at java.base/java.util.ServiceLoader.checkCaller(ServiceLoader.java:574)
at java.base/java.util.ServiceLoader.<init>(ServiceLoader.java:503)
at java.base/java.util.ServiceLoader.load(ServiceLoader.java:1639)
at ch.qos.logback.classic/ch.qos.logback.classic.util.EnvUtil.loadFromServiceLoader(EnvUtil.java:48)
at ch.qos.logback.classic/ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:155)
at ch.qos.logback.classic/ch.qos.logback.classic.spi.LogbackServiceProvider.initializeLoggerContext(LogbackServiceProvider.java:49)
at ch.qos.logback.classic/ch.qos.logback.classic.spi.LogbackServiceProvider.initialize(LogbackServiceProvider.java:40)
at org.slf4j/org.slf4j.LoggerFactory.bind(LoggerFactory.java:153)
at org.slf4j/org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:141)
at org.slf4j/org.slf4j.LoggerFactory.getProvider(LoggerFactory.java:419)
at org.slf4j/org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:405)
at org.slf4j/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:354)
at org.slf4j/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:380)
at com.io7m.bugs.logback/com.io7m.bugs.logback.Main.<clinit>(Main.java:8)