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

Maven多模块项目中生成client模块可执行JAR的命令咨询

解决Maven多模块项目中Client模块可执行JAR打包问题

首先,咱们先拆解你遇到的错误原因:你的root模块打包类型是pom(<packaging>pom</packaging>),这意味着它不会生成JAR文件——它只是一个父模块,用来统一管理依赖和插件配置。但你的client模块里却添加了对root:jar的依赖,Maven自然找不到这个不存在的JAR包,这就是报错的核心问题。

接下来分两步解决问题,然后给出正确的打包命令:

1. 修复Client模块的依赖配置

打开client子模块的pom.xml,删除下面这个无效的依赖:

<dependency>
  <groupId>ru.netCracker</groupId>
  <artifactId>root</artifactId>
  <version>1.1.0</version>
</dependency>

你已经通过<parent>标签继承了root模块的配置,不需要再依赖它的JAR(因为它根本没有JAR)。

2. 配置可执行JAR生成插件

maven-jar-plugin只能生成不包含依赖的普通JAR,要生成能直接运行的可执行JAR,需要用maven-assembly-plugin或maven-shade-plugin。这里推荐用maven-assembly-plugin,配置简单直观:

在client模块的<build><plugins>里添加以下插件配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>3.4.2</version>
  <configuration>
    <!-- 生成包含所有依赖的JAR -->
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <archive>
      <manifest>
        <!-- 指定主类路径 -->
        <mainClass>sample.Main</mainClass>
      </manifest>
    </archive>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id>
      <!-- 绑定到package阶段自动执行 -->
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

3. 执行Maven打包命令

在项目根目录下执行以下命令即可完成打包:

  1. 清理之前的构建产物:
mvn clean
  1. 安装父模块到本地仓库(确保子模块能继承父配置)并打包所有模块:
mvn install

或者直接一步到位:

mvn clean install

执行完成后,你会在client/target目录下看到两个JAR文件:

  • client-1.1.0.jar:普通JAR(不含依赖)
  • client-1.1.0-jar-with-dependencies.jar:可执行JAR(包含所有依赖,直接用java -jar命令就能运行)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:37:03