【发布时间】:2021-04-01 08:00:17
【问题描述】:
我正在使用服务提供者接口为 keycloak 创建插件(提供者)。我已经能够建立一对。现在我需要添加 smallrye-graphql-client 库来查询 graphql 服务器。但是,当我部署插件时,在类路径中找不到该库。
问题
- 是否仍然可以创建包含依赖库的 jar?
- 如果 1 不可能,可以通过战争来完成吗?
- 如何将库添加到类路径。最好将它们与插件一起添加,而不是静态添加到 Wildfly。我正在使用gradle。更多详情如下。
背景资料
我成功地为它创建了一个类和集成测试。但是,当我将插件部署到 keycloak 时,出现以下错误:
16:38:38,127 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-1)
Uncaught server error: java.util.ServiceConfigurationError: no
io.smallrye.graphql.client.typesafe.api.GraphQlClientBuilder in classpath
我已将 gradle 配置为包含导致问题的依赖项并将其添加到类路径中。我怀疑我应该在 jboss-deployment-structure.xml 中添加一个条目,但我不知道我应该在那里写什么。
gradle 配置
plugins {
id 'war'
id 'java-library'
id 'maven-publish'
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
configurations {
dependenciesToInclude
}
dependencies {
dependenciesToInclude "io.smallrye:smallrye-graphql-client:1.0.20"
providedCompile group: 'javax.enterprise', name: 'cdi-api', version: '2.0'
providedCompile "org.keycloak:keycloak-server-spi:${keycloakVersion}"
providedCompile "org.keycloak:keycloak-server-spi-private:${keycloakVersion}"
providedCompile("org.keycloak:keycloak-services:${keycloakVersion}") {
exclude group: 'org.slf4j', module: 'slf4j-api'
exclude group: 'org.slf4j', module: 'slf4j-log4j12'
}
providedCompile group: 'org.keycloak', name: 'keycloak-model-api', version: '1.8.1.Final'
providedCompile "org.jboss.resteasy:resteasy-jaxrs"
providedCompile group: 'org.eclipse.microprofile.graphql', name: 'microprofile-graphql-api', version: '1.0.3'
compile group: 'org.apache.geronimo.config', name: 'geronimo-config-impl', version: '1.2.2'
configurations.compile.extendsFrom(configurations.dependenciesToInclude)
}
jar {
manifest {
attributes(
"Class-Path": configurations.dependenciesToInclude.collect { it.getName() }.join(' '))
}
from {
configurations.dependenciesToInclude.collect { it.isDirectory() ? it : zipTree(it) }
}
}
❯ cat META-INF/MANIFEST.MF ─╯
Manifest-Version: 1.0
Class-Path: smallrye-graphql-client-1.0.20.jar geronimo-config-impl-1.2.
2.jar smallrye-graphql-client-api-1.0.20.jar microprofile-graphql-api-1
.0.3.jar microprofile-config-api-1.3.jar org.osgi.annotation.versioning
-1.0.0.jar
下面是 jboss-deployment-structure.xml。在那里你可以看到我尝试包含 graphql 库(已注释掉)
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.keycloak.keycloak-services"/>
<module name="org.keycloak.keycloak-saml-core-public"/>
<module name="org.apache.commons.codec"/>
<module name="org.apache.commons.lang"/>
<module name="org.jboss.logging"/>
<!-- <module name="io.smallrye.smallrye-graphql-client"/>-->
</dependencies>
</deployment>
</jboss-deployment-structure>
我正在使用 Keycloak 11.0.2 (WildFly Core 12.0.3.Final)
【问题讨论】:
标签: java gradle jar wildfly keycloak