You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Kotlin编写Quarkus扩展?入门配置及示例咨询

用Kotlin开发Quarkus扩展的步骤与配置

核心配置要点

你需要同时添加Quarkus Kotlin扩展依赖和Kotlin Maven插件,两者配合才能让Kotlin代码在Quarkus扩展中正常编译、运行并被框架识别。

1. 添加Quarkus Kotlin扩展依赖

在pom.xml的<dependencies>块中加入:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-kotlin</artifactId>
</dependency>

这个依赖提供Quarkus与Kotlin集成的必要支撑,包括Kotlin专属增强、兼容性处理,是开发Kotlin版Quarkus扩展的基础。

2. 配置Kotlin Maven插件

在pom.xml的<build><plugins>块中添加插件,需确保它在Java插件前执行(Kotlin可调用Java代码,反之亦然):

<plugin>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-maven-plugin</artifactId>
    <version>${kotlin.version}</version>
    <executions>
        <execution>
            <id>compile</id>
            <goals>
                <goal>compile</goal>
            </goals>
            <configuration>
                <sourceDirs>
                    <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                    <sourceDir>${project.basedir}/src/main/java</sourceDir>
                </sourceDirs>
            </configuration>
        </execution>
        <execution>
            <id>test-compile</id>
            <goals>
                <goal>test-compile</goal>
            </goals>
            <configuration>
                <sourceDirs>
                    <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                    <sourceDir>${project.basedir}/src/test/java</sourceDir>
                </sourceDirs>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-allopen</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
    </dependencies>
    <configuration>
        <compilerPlugins>
            <plugin>all-open</plugin>
        </compilerPlugins>
        <pluginOptions>
            <option>all-open:annotation=io.quarkus.runtime.annotations.RegisterForReflection</option>
            <option>all-open:annotation=javax.enterprise.context.ApplicationScoped</option>
        </pluginOptions>
    </configuration>
</plugin>

其中all-open插件是关键:Quarkus需要类为开放状态(而非Kotlin默认的final)才能进行代理增强,所以要指定Quarkus常用注解对应的类自动开放。

简单Kotlin版Quarkus扩展示例

1. 扩展注册类

创建src/main/kotlin/com/example/MyExtension.kt:

import io.quarkus.runtime.annotations.QuarkusExtension
import io.quarkus.runtime.annotations.RegisterForReflection

@QuarkusExtension
@RegisterForReflection
class MyExtension {
    // 扩展初始化逻辑,比如注册自定义Bean、拦截器等
}

2. 自定义Bean(可选)

import javax.enterprise.context.ApplicationScoped

@ApplicationScoped
class MyKotlinService {
    fun sayHello(): String = "Hello from Kotlin Quarkus Extension!"
}

3. 扩展部署处理器(自定义部署逻辑用)

import io.quarkus.deployment.annotations.BuildStep
import io.quarkus.deployment.builditem.FeatureBuildItem

class MyExtensionProcessor {
    @BuildStep
    fun feature(): FeatureBuildItem {
        return FeatureBuildItem("my-kotlin-extension")
    }
}

关键注意事项

  • 确保kotlin.version与Quarkus版本兼容,建议使用Quarkus BOM管理的Kotlin版本,避免版本冲突。
  • 若扩展需在Quarkus部署阶段执行逻辑,处理器类需放在deployment模块中(标准Quarkus扩展多模块结构),上述示例为单模块简化版,生产级扩展建议采用api+deployment的多模块模式。

内容的提问来源于stack exchange,提问作者b0ro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 02:25:57