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

如何通过Maven正确依赖jar-with-dependencies(Fat Jar)

Maven快照版本中jar-with-dependencies依赖使用问题

本地仓库结构

aaa/0.1.0-SNAPSHOT
-- aaa-0.1.0-20231216.113327-1.jar
-- aaa-0.1.0-20231216.113327-1.pom
-- aaa-0.1.0-SNAPSHOT-jar-with-dependencies.jar

POM依赖配置

<dependency>
    <groupId>com.xxx.yyy</groupId>
    <artifactId>aaa</artifactId>
    <version>0.1.0-SNAPSHOT</version>
    <classifier>jar-with-dependencies</classifier>
</dependency>

报错信息

编译时报错:The POM for com.xxx.yyy:aaa:jar:jar-with-dependencies:1.1.0.33-SNAPSHOT is missing, no dependency information available

本地仓库已下载aaa-0.1.0-SNAPSHOT-jar-with-dependencies.jar,但缺少aaa-0.1.0-SNAPSHOT.jar和aaa-0.1.0-SNAPSHOT.pom,需解决如何正确使用带jar-with-dependencies classifier的快照依赖。


解决方案

1. 排查版本一致性问题

报错中出现的版本1.1.0.33-SNAPSHOT与配置的0.1.0-SNAPSHOT不一致,先检查项目是否存在其他依赖引用错误版本导致冲突。可执行mvn dependency:tree查看依赖树,定位冲突来源。

2. 从构建源头生成对应classifier的快照POM

如果aaa是你维护的项目,需在其POM中配置maven-assembly-plugin,确保快照构建时同步生成并上传带classifier的POM:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.6.0</version>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <appendAssemblyId>true</appendAssemblyId>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <attach>true</attach> <!-- 关键:将组装产物附加到构建,deploy时同步上传对应POM -->
            </configuration>
        </execution>
    </executions>
</plugin>

重新执行mvn clean deploy发布快照版本,仓库会生成对应classifier的快照POM(如aaa-0.1.0-2023xxxx.xxxxx-x-jar-with-dependencies.pom),Maven即可正确识别依赖。

3. 本地仓库临时修复(不推荐长期使用)

若无法重新构建aaa项目,可手动修改本地仓库:

  • 在aaa/0.1.0-SNAPSHOT目录下,复制现有aaa-0.1.0-20231216.113327-1.pom,重命名为aaa-0.1.0-SNAPSHOT-jar-with-dependencies.pom
  • 编辑该目录下的maven-metadata.xml,添加jar-with-dependencies classifier的快照条目,确保时间戳与现有文件匹配

完成后执行mvn clean install -U强制更新快照缓存。

4. 清理Maven缓存

执行mvn clean install -U,强制Maven更新快照依赖,重新拉取正确的POM和jar文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:50:12