news 2026/4/15 12:02:55

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/15 12:02:02

英雄联盟智能助手终极指南:5大核心功能全面优化你的游戏体验

英雄联盟智能助手终极指南&#xff1a;5大核心功能全面优化你的游戏体验 【免费下载链接】LeagueAkari ✨兴趣使然的&#xff0c;功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 作…

作者头像 李华
网站建设 2026/4/14 22:34:19

LeagueAkari完整操作手册:从零掌握英雄联盟自动化工具

LeagueAkari完整操作手册&#xff1a;从零掌握英雄联盟自动化工具 【免费下载链接】LeagueAkari ✨兴趣使然的&#xff0c;功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 还在为英…

作者头像 李华
网站建设 2026/4/15 12:01:30

小白也能懂!IQuest-Coder-V1-40B保姆级编程教程

小白也能懂&#xff01;IQuest-Coder-V1-40B保姆级编程教程 在AI代码生成领域&#xff0c;模型的智能化程度正以前所未有的速度演进。近期&#xff0c;九坤投资旗下至知创新研究院发布的 IQuest-Coder-V1-40B-Instruct 模型&#xff0c;凭借其卓越性能和创新架构&#xff0c;迅…

作者头像 李华
网站建设 2026/4/8 0:28:50

XUnity自动翻译插件:5步解锁全球游戏语言障碍

XUnity自动翻译插件&#xff1a;5步解锁全球游戏语言障碍 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 在当今游戏全球化的浪潮中&#xff0c;语言差异往往成为玩家探索精彩游戏世界的最大障碍。XUnity…

作者头像 李华
网站建设 2026/4/13 4:35:20

Windows任务栏美化终极方案:TranslucentTB一键打造透明桌面

Windows任务栏美化终极方案&#xff1a;TranslucentTB一键打造透明桌面 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB 想要让Windows桌面焕然一新&#xff0c;从任务栏透明美化开始是最简单有效的方式。TranslucentTB作…

作者头像 李华
网站建设 2026/4/14 17:18:18

纪念币预约自动化工具:告别手动抢购,轻松拥有心仪藏品

纪念币预约自动化工具&#xff1a;告别手动抢购&#xff0c;轻松拥有心仪藏品 【免费下载链接】auto_commemorative_coin_booking 项目地址: https://gitcode.com/gh_mirrors/au/auto_commemorative_coin_booking 还在为每次纪念币预约都失败而烦恼吗&#xff1f;这款革…

作者头像 李华