
本文介绍在 Maven 项目中集成任意第三方或本地编译(如 IntelliJ 直接导出)JAR 包的规范方法,重点解决 system 依赖已弃用、运行时类找不到(NoClassDefFoundError)等问题,并推荐使用 mvn deploy:deploy-file 将 JAR 安装至本地仓库。
本文介绍在 maven 项目中集成任意第三方或本地编译(如 intellij 直接导出)jar 包的规范方法,重点解决 `system` 依赖已弃用、运行时类找不到(noclassdeffounderror)等问题,并推荐使用 `mvn deploy:deploy-file` 将 jar 安装至本地仓库。
在 Maven 生态中,直接通过
✅ 正确做法是:将非 Maven 构建的 JAR 安装(install)或部署(deploy)到本地 Maven 仓库,使其成为标准坐标依赖。推荐优先使用 mvn install:install-file(适用于仅本地开发场景),而非 deploy:deploy-file(后者面向远程仓库发布):
mvn install:install-file \ -Dfile=deps/AmongUs.jar \ -DgroupId=org.plegeus \ -DartifactId=AmongUs \ -Dversion=1.0 \ -Dpackaging=jar \ -DgeneratePom=true
执行成功后,JAR 将被复制到本地仓库路径(如 ~/.m2/repository/org/plegeus/AmongUs/1.0/AmongUs-1.0.jar),此时即可在 pom.xml 中以标准方式声明依赖:
<dependency> <groupId>org.plegeus</groupId> <artifactId>AmongUs</artifactId> <version>1.0</version> </dependency>
⚠️ 注意事项:
- groupId/artifactId/version 需与 install-file 命令中完全一致,否则依赖解析失败;
- 若需生成带描述信息的 POM,可追加 -Ddescription="AmongUs core library";
- 若原 JAR 已含 MANIFEST.MF 或 META-INF/MANIFEST.MF 中定义了 Implementation-Title 等属性,Maven 不会自动读取,仍需显式指定元数据;
- 对于团队协作项目,建议将 JAR 及其 POM 上传至私有 Nexus/Artifactory 仓库,并配置
,避免每个开发者重复安装。
完成上述步骤后,再次执行 mvn clean package,Maven 会将 AmongUs-1.0.jar 正确包含进 target/benchmarks.jar 的 BOOT-INF/lib/(Spring Boot)或 lib/(普通 assembly)目录中,java -jar target/benchmarks.jar 即可正常加载 Image 类。此方法确保依赖可追踪、可复现、可打包,符合 Maven 最佳实践。

















