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

Spring Boot+Maven配置Pkl遭遇依赖冲突问题求助

Pkl Spring Boot Maven项目依赖版本冲突解决

我在给Maven构建的Spring Boot应用配置Pkl时,参考了Pkl官方Spring文档,但文档仅提供Gradle配置指引。添加pkl-codegen-java依赖后,和已引入的pkl-spring(版本0.15.0)因版本不一致(pkl-codegen-java使用0.25.2)出现大量org.pkl.core下的重复类冲突,导致duplicate-finder-maven-plugin报错。

现有依赖配置

原依赖

<dependency>
  <groupId>org.pkl-lang</groupId>
  <artifactId>pkl-spring</artifactId>
  <version>0.15.0</version>
  <scope>compile</scope>
</dependency>

新增依赖

<dependency>
    <groupId>org.pkl-lang</groupId>
    <artifactId>pkl-codegen-java</artifactId>
    <version>0.25.2</version>
</dependency>

报错信息

[ERROR] Failed to execute goal org.basepom.maven:duplicate-finder-maven-plugin:1.4.0:check (default) on project adventureservService: Found duplicate classes/resources! -> [Help 1]

随后出现大量org.pkl.core下的重复类警告。


解决方法

1. 统一所有Pkl相关依赖版本

Pkl的各个组件(pkl-spring、pkl-codegen-java等)必须使用完全一致的版本,否则极易出现类冲突。可以选择两种方式:

  • 将pkl-spring版本升级到与pkl-codegen-java一致的0.25.2:
<dependency>
  <groupId>org.pkl-lang</groupId>
  <artifactId>pkl-spring</artifactId>
  <version>0.25.2</version>
  <scope>compile</scope>
</dependency>

<dependency>
    <groupId>org.pkl-lang</groupId>
    <artifactId>pkl-codegen-java</artifactId>
    <version>0.25.2</version>
</dependency>
  • 或者将pkl-codegen-java降级到0.15.0,保持版本统一。

2. 用Maven依赖管理统一管控版本

为避免后续添加Pkl组件时再次出现版本不一致,建议在dependencyManagement中引入Pkl的BOM来统一声明版本:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.pkl-lang</groupId>
      <artifactId>pkl-bom</artifactId>
      <version>0.25.2</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

之后在dependencies中引入Pkl组件时无需指定版本,自动继承BOM中的统一版本:

<dependency>
  <groupId>org.pkl-lang</groupId>
  <artifactId>pkl-spring</artifactId>
  <scope>compile</scope>
</dependency>

<dependency>
    <groupId>org.pkl-lang</groupId>
    <artifactId>pkl-codegen-java</artifactId>
</dependency>

3. 临时排除冲突依赖(不推荐)

如果暂时无法统一版本,可以尝试排除其中一个依赖中的重复pkl-core模块,但这种方法可能引发类缺失问题,仅作为临时方案:
例如排除pkl-spring中的pkl-core:

<dependency>
  <groupId>org.pkl-lang</groupId>
  <artifactId>pkl-spring</artifactId>
  <version>0.15.0</version>
  <scope>compile</scope>
  <exclusions>
    <exclusion>
      <groupId>org.pkl-lang</groupId>
      <artifactId>pkl-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:13:34