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

Maven Embedded在我的Maven项目中报错的原因是什么?

内嵌Maven执行编译时出现RepositorySystem绑定错误

执行代码

System.setProperty("maven.multiModuleProjectDirectory", projectRoot.getAbsolutePath());
MavenCli cli = new MavenCli();
cli.doMain(
    new String[] {"clean","install"}, projectRoot.getAbsolutePath(), System.out, System.err);

错误日志

[2023-05-31 16:52:02.450] [ERROR] [main] o.a.m.c.MavenCli [CLIReportingUtils.java:142] Error executing Maven.
[2023-05-31 16:52:02.452] [ERROR] [main] o.a.m.c.MavenCli [CLIReportingUtils.java:145] com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) No implementation for RepositorySystem was bound.
  while locating DefaultProjectBuildingHelper
  at ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]]
      \_ installed by: WireModule -> PlexusBindingModule
  while locating ProjectBuildingHelper
  while locating DefaultProjectBuilder
  at ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]]
      \_ installed by: WireModule -> PlexusBindingModule
  while locating ProjectBuilder
  while locating DefaultMaven
  at ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]]
      \_ installed by: WireModule -> PlexusBindingModule
  while locating Maven

1 error

======================
Full classname legend:
======================
DefaultMaven:                 "org.apache.maven.DefaultMaven"
DefaultProjectBuilder:        "org.apache.maven.project.DefaultProjectBuilder"
DefaultProjectBuildingHelper: "org.apache.maven.project.DefaultProjectBuildingHelper"
Maven:                        "org.apache.maven.Maven"
PlexusBindingModule:          "org.eclipse.sisu.plexus.PlexusBindingModule"
ProjectBuilder:               "org.apache.maven.project.ProjectBuilder"
ProjectBuildingHelper:        "org.apache.maven.project.ProjectBuildingHelper"
RepositorySystem:             "org.apache.maven.repository.RepositorySystem"
WireModule:                   "org.eclipse.sisu.wire.WireModule"
========================
End of classname legend:
========================

      role: org.apache.maven.Maven
  roleHint: 

当前POM依赖

<dependencies>
    <dependency>
      <groupId>org.eclipse.jgit</groupId>
      <artifactId>org.eclipse.jgit</artifactId>
      <version>6.5.0.202303070854-r</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.gitlab4j</groupId>
      <artifactId>gitlab4j-api</artifactId>
      <version>5.2.0</version>
      <exclusions>
        <exclusion>
          <groupId>jakarta.activation</groupId>
          <artifactId>jakarta.activation-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.javassist</groupId>
          <artifactId>javassist</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
        </exclusion>
        <exclusion>
          <groupId>jakarta.xml.bind</groupId>
          <artifactId>jakarta.xml.bind-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.28</version>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>7.8.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>5.3.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-embedder</artifactId>
      <version>3.9.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

环境信息

  • JDK 11
  • Maven 3.9.2

解决方案

该错误是由于maven-embedder依赖缺少必要的组件,导致Guice无法找到RepositorySystem的实现类。需要在POM中补充以下依赖:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-core</artifactId>
    <version>3.9.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-compat</artifactId>
    <version>3.9.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.eclipse.aether</groupId>
    <artifactId>aether-connector-basic</artifactId>
    <version>2.0.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.eclipse.aether</groupId>
    <artifactId>aether-transport-http</artifactId>
    <version>2.0.1</version>
    <scope>test</scope>
</dependency>

注意保持所有Maven相关依赖的版本与maven-embedder一致(这里为3.9.1),补充后Guice就能正确绑定RepositorySystem的实现,解决依赖注入失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:57:06