Spring Boot 2在运行时使用ServiceLoader无法看到jdk 9模块

时间:2018-09-21 16:13:09

标签: java spring-boot gradle java-9 java-module

在一个gradle多项目构建中,我具有以下模块。 user-api提供的接口user-impl实现此接口。我还有第三个模块网站,应该使用user-impl中定义的服务。以下是来自build.gradle的有关Web项目的片段:

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: "org.gradle.java.experimental-jigsaw"

dependencies {
    implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
    implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.16'
    implementation group: 'io.projectreactor.addons', name: 'reactor-adapter'
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.8'
    implementation('org.springframework.boot:spring-boot-starter-webflux')

    implementation project(":user:api")
    runtimeOnly project(":user:impl")
}

当我从Intellij运行项目时,它可以正常运行,我可以看到使用ServiceLoader找到了我的服务实现。但是,当尝试使用bootRun从gradle运行应用程序时,我看不到我的服务实现。我创建了另一个测试项目,它是简单的Java应用程序,在这种情况下,我可以使用服务加载器发现实现。我怀疑问题与弹簧靴肥罐有某种关系,但是我不完全是引起问题的原因吗?有什么建议么? Java版本18.3(内部版本10.0.2 + 13),Gradle 4.10.1

0 个答案:

没有答案