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

如何强制Quarkus将javax.activation与jakarta库纳入uber jar

解决Quarkus同时纳入javax.activation与Jakarta依赖的问题

可以通过配置quarkus-maven-plugin结合pom依赖声明实现,核心是利用插件的强制包含功能覆盖Quarkus扩展的依赖排除规则,具体操作如下:

1. 显式声明所需依赖

在pom.xml中同时引入javax.activation和Jakarta Activation依赖,确保它们的scope为compile,避免被默认规则排除:

<dependencies>
    <!-- 遗留SDK依赖的javax.activation -->
    <dependency>
        <groupId>com.sun.activation</groupId>
        <artifactId>javax.activation</artifactId>
        <version>1.2.0</version>
        <scope>compile</scope>
    </dependency>
    <!-- Quarkus 3.x兼容的Jakarta Activation依赖 -->
    <dependency>
        <groupId>jakarta.activation</groupId>
        <artifactId>jakarta.activation-api</artifactId>
        <version>2.1.2</version>
        <scope>compile</scope>
    </dependency>
    <!-- 你的遗留SDK依赖 -->
    <dependency>
        <groupId>your.group.id</groupId>
        <artifactId>legacy-sdk</artifactId>
        <version>x.y.z</version>
    </dependency>
</dependencies>

2. 配置quarkus-maven-plugin强制包含

在插件配置中添加<forceInclude>节点,指定需要强制纳入uber jar的构件,直接覆盖Quarkus扩展的排除规则:

<build>
    <plugins>
        <plugin>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-maven-plugin</artifactId>
            <version>${quarkus.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <forceInclude>
                    <dependency>
                        <groupId>com.sun.activation</groupId>
                        <artifactId>javax.activation</artifactId>
                    </dependency>
                    <dependency>
                        <groupId>jakarta.activation</groupId>
                        <artifactId>jakarta.activation-api</artifactId>
                    </dependency>
                </forceInclude>
            </configuration>
        </plugin>
    </plugins>
</build>

3. 关键注意事项

  • 版本兼容性:Quarkus 3.x基于Jakarta EE 10,Jakarta Activation建议使用2.x版本,javax.activation选用1.2.0这类稳定版本,避免类冲突。
  • 验证结果:构建完成后,可通过jar tf your-app-runner.jar命令查看uber jar内容,确认javax/activation和jakarta/activation路径下的类文件已被包含。
  • 关于扩展排除规则:正如你提到的——

Quarkus扩展可能会定义应始终从构建中排除的构件
这时候<forceInclude>就是最直接的解决方案,它会忽略扩展的排除配置,强制将指定依赖加入最终构建产物。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:10:04