news 2026/4/8 9:25:22

Maven指定加载的类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Maven指定加载的类

有的时候需要把单个类文件放到 Linux 环境上去运行,但是又不想引入 SpringBoot 相关的依赖以接口的形式来访问,如下介绍下使用 Maven 指定加载的类,打包到 Linux 环境运行

文章目录

      • 准备工作
      • maven-jar-plugin(写入 Main-Class)
      • maven-shade-plugin(打包 fat-jar)
      • 运行 & 打包(命令示例)

准备工作

  • 拿这篇文章的类【打破 OS 壁垒:Java 跨平台硬件信息采集的“终极方案”
    】中的 SystemInfoCollector.java 来举例
  • 首先需要把 main 方法给加上,在 SystemInfoCollector 中增加如下:
publicstaticvoidmain(String[]args){System.out.println("version: "+SystemInfoCollector.getVersion());System.out.println("systemName: "+SystemInfoCollector.getSystemName());System.out.println("localIp: "+SystemInfoCollector.getLocalIp());System.out.println("mac: "+SystemInfoCollector.getMac());System.out.println("cpuSerial: "+SystemInfoCollector.getCpuSerial());System.out.println("hardSerial: "+SystemInfoCollector.getHardSerial());System.out.println("drive: "+SystemInfoCollector.getDrive());System.out.println("fileSystem: "+SystemInfoCollector.getFileSystem());System.out.println("partitionSize: "+SystemInfoCollector.getPartitionSize());System.out.println("systemDisk: "+SystemInfoCollector.getSystemDisk());System.out.println("pcName: "+SystemInfoCollector.getPcName());System.out.println("pcSerial: "+SystemInfoCollector.getPcSerial());}
  • pom 加上 maven-jar-plugin(写入 Main-Class) 、maven-shade-plugin插件,如:
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>xxxx</groupId><artifactId>xxx</artifactId><version>xxx</version><relativePath>xxx/pom.xml</relativePath></parent><artifactId>xxx</artifactId><name>xxx</name><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><scope>test</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.32</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.1.0</version><configuration><archive><manifest><!-- 这里指定类名 --><mainClass>com.xdr630.util.SystemInfoCollector</mainClass></manifest></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><createDependencyReducedPom>false</createDependencyReducedPom></configuration></execution></executions></plugin></plugins></build></project>

maven-jar-plugin(写入 Main-Class)

注意:这是普通 JAR 写 manifest 的传统方式。但当同时用 maven-shade-plugin 生成一个 shaded (fat) jar 时,最终的 shaded JAR 的 manifest 可能不会自动来自 maven-jar-plugin 的设置——因为 shade 重新生成了 JAR(替换了 jar 内容)。需要在 shade 配置中显式设置或使用 transformer 写入 Main-Class。

maven-shade-plugin(打包 fat-jar)

  • createDependencyReducedPom=false:默认 shade 会生成一个 dependency-reduced-pom(去除那些已经合并进 fat-jar 的依赖),把它关掉可避免对后续部署/发布流程造成影响(但也可能在某些场景下导致多余依赖声明)。常见做法:保留或关闭取决于你是否要把生成的 POM 用作发布到仓库的 POM。

  • 缺点:当前配置没有设置 transformers(例如 ManifestResourceTransformer),因此生成的 shaded jar 可能没有 Main-Class。还未处理依赖冲突 (relocations) 和服务文件合并(META-INF/services 等)。

运行 & 打包(命令示例)

  • 本地打包:
mvn clean package
  • 运行:
java -jar xxx.jar
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 3:32:55

AI人体骨骼关键点检测实战教程:MediaPipe Pose从零部署到应用

AI人体骨骼关键点检测实战教程&#xff1a;MediaPipe Pose从零部署到应用 1. 学习目标与技术背景 随着计算机视觉技术的快速发展&#xff0c;人体姿态估计&#xff08;Human Pose Estimation&#xff09;已成为智能健身、动作捕捉、虚拟现实和人机交互等领域的核心技术之一。…

作者头像 李华
网站建设 2026/3/31 19:29:54

小白也能懂:HY-MT1.5-1.8B翻译模型快速上手指南

小白也能懂&#xff1a;HY-MT1.5-1.8B翻译模型快速上手指南 1. 前言&#xff1a;为什么你需要关注这款翻译模型&#xff1f; 在AI大模型“军备竞赛”愈演愈烈的今天&#xff0c;参数动辄上百亿、千亿&#xff0c;部署成本高企不下。然而&#xff0c;腾讯混元团队推出的 HY-MT1…

作者头像 李华
网站建设 2026/4/4 1:42:02

快速配置Unity游戏翻译:XUnity.AutoTranslator终极免费教程

快速配置Unity游戏翻译&#xff1a;XUnity.AutoTranslator终极免费教程 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 想要为Unity游戏添加多语言支持却苦于技术门槛&#xff1f;XUnity.AutoTranslator作…

作者头像 李华
网站建设 2026/3/30 19:44:46

纪念币预约终极指南:自动化工具助你轻松抢币

纪念币预约终极指南&#xff1a;自动化工具助你轻松抢币 【免费下载链接】auto_commemorative_coin_booking 项目地址: https://gitcode.com/gh_mirrors/au/auto_commemorative_coin_booking 还在为每次纪念币发行抢不到而烦恼吗&#xff1f;纪念币预约自动化工具专为普…

作者头像 李华
网站建设 2026/4/3 19:35:36

3步完美解锁付费内容:小白也能上手的免费阅读终极指南

3步完美解锁付费内容&#xff1a;小白也能上手的免费阅读终极指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的时代&#xff0c;你是否常常遇到心仪的文章被付费墙阻挡…

作者头像 李华
网站建设 2026/4/2 15:55:27

AI骨骼关键点插值修复:缺失点位重建算法实战应用

AI骨骼关键点插值修复&#xff1a;缺失点位重建算法实战应用 1. 引言&#xff1a;AI人体骨骼关键点检测的现实挑战 随着计算机视觉技术的发展&#xff0c;AI人体骨骼关键点检测已成为动作识别、姿态分析、虚拟试衣、康复训练等领域的核心技术。基于深度学习的姿态估计模型能够…

作者头像 李华