首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Maven指定MANIFEST.MF的主类来构建JAR?

Maven是一个流行的项目管理工具,可以帮助开发人员自动化构建、测试和部署Java项目。使用Maven构建JAR文件时,可以通过指定MANIFEST.MF文件中的主类来确保JAR文件可以正确执行。

要使用Maven指定MANIFEST.MF的主类来构建JAR,可以按照以下步骤进行操作:

  1. 在项目的pom.xml文件中,添加以下插件配置:
代码语言:txt
复制
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.2.0</version>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.example.MainClass</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

在上述配置中,将com.example.MainClass替换为你项目中的实际主类。

  1. 执行Maven命令进行构建:
代码语言:txt
复制
mvn clean package

该命令将会编译、测试、打包并生成JAR文件。

  1. 在target目录下找到生成的JAR文件,使用解压缩工具(如WinRAR)打开,可以看到其中的META-INF目录下有一个MANIFEST.MF文件。
  2. 打开MANIFEST.MF文件,确认其中的Main-Class属性是否已经被正确设置为你指定的主类。

通过以上步骤,你可以使用Maven指定MANIFEST.MF的主类来构建JAR文件。这样生成的JAR文件可以通过命令行或其他方式直接执行。

Maven相关的产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈 java 中构建可执行 jar几种方式

会直接报错:无法找到或者找不到 xxx 依赖包/,这是由于你没有定义 MANIFEST.MF 资源描述文件所致, 或者你直接把依赖 jar 包打进了你最终 jar,而这种嵌套依赖...下面我们看看如何在 eclipse 中构建一个可执行 jar 包。...构建,在 maven 工程中,我们也可以很方便打包成可执行 jar 包。...maven-jar-plugin 可以做很多事情,但在这里,我们只对使用修改默认 MANIFEST.MF 文件内容感兴趣。...classpathPrefix:如果您计划在同一目录下包含有您所有依赖项,作为您将构建 JAR,那么您可以忽略它;否则使用  classpathPrefix 指定所有依赖 JAR 文件前缀。

3.7K50

SpringBoot - 探究Spring Boot应用是如何通过java -jar 启动

源码中指定了整个应用启动; 简单来说: java -jar会去找jarmanifest文件,去找到Main-Class对应真正启动; 那看看去吧 ?...---- JarLauncher工作流程 从MANIFEST.MF可以看到Main函数是JarLauncher,下面分析它工作流程。...(2)以第一步构建ClassLoader加载MANIFEST.MF文件中Start-Class指向业务,并且执行静态方法main。进而启动整个程序。...至此,才执行我们应用程序入口main方法,所有应用程序文件均可通过/BOOT-INF/classes加载,所有依赖第三方jar均可通过/BOOT-INF/lib加载。 ?...通过spring-boot-plugin 生成了MANIFEST.MF , main-class 指定运行java -jar主程序把依赖jar文件 打包在fat jar. ?

1.4K30

改变maven打包路径_Maven打包技巧「建议收藏」

生命周期阶段,Mavenjar项目调用了maven-jar-plugin,为war项目调用了maven-war-plugin,换言之,packaging直接影响Maven构建生命周期。...jar 为了帮助所有Maven用户更方便使用Maven中央库中海量资源,中央仓库维护者强制要求开源项目提交构件时候同时提供源码包和Javadoc包。...关于项目的依赖,它很聪明地将依赖JAR文件全部解压后,再将得到.class文件连同当前项目的.class文件一起合并到最终CLI包中,这样,在执行CLI JAR文件时候,所有需要就都在Classpath...fileSets允许用户通过文件或目录粒度控制打包。...小结 打包是项目构建最重要组成部分之一,本文介绍了主流Maven打包技巧,包括默认打包方式原理、如何制作源码包和Javadoc包、如何制作命令行可运行CLI包、以及进一步如何基于个性化需求自定义打包格式

2.1K20

Spring Boot Maven Plugin打包异常及三种解决方法:Unable to find main class

【背景】spring-boot项目,打包成可执行jar,项目内有两个带有main方法并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在都没有使用...因为spring-boot:repackage目标(goal)(下文会说)被绑定在package构建阶段(phases),而package阶段在install阶段之前,指定构建阶段之前阶段都会执行。...,也就是jar里面的清单文件),此文件管理着(Main-Class)和开始(Start-Class)入口。...张图直观感受下,对应使用上面xml配置打包后清单文件(MANIFEST.MF): ?   layout属性默认不需要配置,插件会自动推断。...简单点说,这货重新打包个可执行jar/war,可以在命令行使用-jar执行。如果指定layout为NONE那就没有主只是打个普通jar(不可执行),一般不会这么做。

14.2K20

Jpackage-制作无需预装Java环境Jar可执行程序

这篇文章我们会先学习如何将 Java 程序打包成一个可执行 Java JAR 文件。然后演示如何使用这个 JAR 文件生成 Windows、Linux、MacOS 上可执行程序。...我们将使用 Java 自带 jar 命令行工具创建 JAR 文件。然后学会使用 jpackage 工具创建各个系统上可执行程序。...一个可执行 jar 文件需要包含一个 main 作为程序入口,并在 MANIFEST.MF 文件中指定 但是为了运行 jar 格式应用程序,必须有一个Java 运行时环境(JRE)。...详细介绍 jar 命令使用不是本文目的,下面给出 jar 命令常见用法。 创建一个输出 Hello Java 用于测试。...首先,介绍如何使用 Java jar 命令行工具创建一个可执行 JAR 文件,这需要编写 Java 程序,配置 MANIFEST.MF 文件,并使用 jar 命令创建包含 JAR 文件。

32110

SpringBoot打包部署解析:jar生成和结构

在享受便利同时,我们也需要多少了解一下 Spring Boot jar 包是如何生成,以及如何通过 jar 包启动运行。...RepackageMojo 就是 提供重新打包现有的 jar 或 war 包文件,使得它们可以使用 javajar 进行启动。 RepackageMojo execute 方法如下。...,如果不指定, 则会查找第一个包含 main 方法 // repackage 最后将会设置 org. springframework . boot ....很显然,使用了相同实现来处理 ZIP 文件和 DIR 文件。 jar 类型为 Layouts 内部类,可以简单看一下 jar 类型处理都包含 了哪些内容。...其中,Manifest.MF 文件通常被用来定义扩展或档案打包相关数据,它是一个元数据文件,数据格式为名/值对。一个可执行 jar 文件需要通过该文件指出该程序

1.4K30

执行jar包中指定main方法

通过maven将应用打成jar包之后,可以通过java -jar ***.jar执行,会运行指定main方法,主要是 MANIFEST.MF指定 main 方法;那么如果有多个main方法时候如何运行指定...****指的是包名; ****.className是名称; args指传递进去参数; 综上:运行jar有两种情况 1>maven打包之后通过MANIFEST.MF指定main方法 java -jar...mplus-service-jar-with-dependencies.jar 如果是maven的话,可以在pom.xml中添加如下代码指定main方法 ...main方法包名+名;然后指定maven package命令,可以看到打包出来jarMETA-INF中MANIFEST.MF内容添加了一项内容 这里面就是我们在pom.xml中指定main...MANIFEST.MF指定jar中有多个main方法,指定运行某个特定main方法命令 java -cp mplus-service-jar-with-dependencies.jar com.smbea.dubbo.bin.Console

3K10

springbootjar为何能独立运行

-0.0.1-SNAPSHOT.jar分析jar文件能够独立启动原因; java -jar做了什么 先要弄清楚java -jar命令做了什么,在官网找到了该命令描述: If the -jar option...和资源文件; 在manifest文件中有Main-Class定义; Main-Class源码中指定了整个应用启动;(in its source code) 小结一下: java -jar会去找jar...,这个和前面的java官方文档对应上了,正是这个JarLauncher代码中指定了真正启动; 疑惑出现 在MANIFEST.MF文件中有这么一行内容: Start-Class: com.bolingcavalry.springbootstarterdemo.Springbootstarter...是如何产生,如下图,maven插件生成jar文件中,有常见class、jar,也有符合java规范MANIFEST.MF文件,并且,还在MANIFEST.MF文件中额外生成了名为Start-Class...配置,这里面是我们编写应用启动SpringbootstarterdemoApplication: [在这里插入图片描述] 启动是JarLauncher,它是如何MANIFEST.MF文件关联

71430

springbootjar为何能独立运行

-SNAPSHOT.jar分析jar文件能够独立启动原因; java -jar做了什么 先要弄清楚java -jar命令做了什么,在官网找到了该命令描述: If the -jar option...和资源文件; 在manifest文件中有Main-Class定义; Main-Class源码中指定了整个应用启动;(in its source code) 小结一下: java -jar会去找...,这个和前面的java官方文档对应上了,正是这个JarLauncher代码中指定了真正启动; 疑惑出现 在MANIFEST.MF文件中有这么一行内容: Start-Class: com.bolingcavalry.springbootstarterdemo.Springbootstarter...是如何产生,如下图,maven插件生成jar文件中,有常见class、jar,也有符合java规范MANIFEST.MF文件,并且,还在MANIFEST.MF文件中额外生成了名为Start-Class...配置,这里面是我们编写应用启动SpringbootstarterdemoApplication: 启动是JarLauncher,它是如何MANIFEST.MF文件关联呢?

38930

maven常用打包命令

大家好,又见面了,我是你们朋友全栈君。 maven常用打包命令 1、mvn compile 编译,将Java 源程序编译成 class 字节码文件。...7、mvn clean pakage -Dmaven.test.skip=true 动态 web工程打 war包,Java工程打 jar 包 ,并且抛弃测试用例打包 Maven可以使用mvn package...指令对项目进行打包,如果使用java -jar xxx.jar执行运行jar文件,会出现”no main manifest attribute, in xxx.jar”(没有设置Main-Class)、...要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1、在jar包中META-INF/MANIFEST.MF指定Main-Class,这样才能确定程序入口在哪里; 2、要能加载到依赖包...--用于指定加载--> org.springframework.boot spring-boot-maven-plugin</artifactId

1.7K10

Java Agent 简介

其实 Java Agent 一点都不神秘,也是一个 Jar 包,只是启动方式和普通 Jar 包有所不同,对于普通Jar包,通过指定 main 函数进行启动,但是 Java Agent 并不能单独启动...我们可以使用 Agent 技术构建一个独立于应用程序代理程序,用来协助监测、运行甚至替换其他 JVM 上程序,使用它可以实现虚拟机级别的 AOP 功能。...程序 main 方法执行之前执行 * * @param agentArgs * @param inst Agent技术主要使用 api,我们可以使用改变和重新定义行为...,需要一些特殊配置,例如指定 Agent 启动等。...,即使新建了 MANIFEST.MF 文件,仍然需要配置 maven-assembly-plugin 信息,否则 MANIFEST.MF 信息会被 Maven 生成信息覆盖掉。

92230

TestOps自动化学习第三天

那就让我一一道来: 问题:run as maven install后,提示无法找到或加载如何解决?...是因为我们项目的pom.xml中没有指定目标,对于maven来说,没有指定目标的前提下,那么默认打包出来就是jar包。可以使用packaging进行指定打包类型。...是因为我们同学不懂install到底是干什么,所以六道老师专门讲解了前面关于mavenGoal知识。 再来看问题:提示无法找到或加载 加载是干什么?...在生成jar包,要有一个可以运行main。必须在jar包中指定main是谁,不然则报错: 那怎么指定呢?...需要在MANIFEST.MF文件中添加Main-Class:路径。 ok,加上后,就可以进行install了。

20830

Instrumentation 介绍与使用

使用 Insrumentation ,开发者而言构建一个独立于应用程序代理程序(Agent),监测和协助运行在JVM 上程序,甚至可以替换和修改某些定义。...简单来说 开发者使用Instrumentation 可以实现一种虚拟机级别的AOP实现。 Instrumentation 最大作用,就是定义动态改变和操作。...程序运行时,通过 -javaagent 参数指定一个特定 jar 文件启动 Instrumentation 代理程序。...其实这个对很多人来说不陌生 xmind, idea 永久破解过程中,都有使用 -javaaegent ,然后指定一个 jar 文件。甚至一些监控软件也用了,例如 skywalking。...Can-Redefine-Classes: true 关键在 Permain-Class :对应路径得和真实一致。

1.5K20

动态追踪之java agent

上篇文章我们说到阿里诊断工具Arthas对方法和监控使用是动态追踪技术,本文我们将介绍动态追踪技术Java Agent。 Java Agent是什么?...Java Agent本身就是个jar包,它利用JVM提供Instrumentation API更改加载在JVM中现有字节码,Java Agent可以理解为是JVM级别的AOP。...修改配置文件并打包 配置文件:配置文件名为MANIFEST.MF,需放在META-INF文件夹下或者在maven中配置。 Premain-Class:表示实现premain方法。...通过VirtualMachineattach(pid)方法,便可以attach到一个运行中java进程上,之后便可以通loadAgent(agentJarPath)将agentjar包注入到对应进程...而动态加载则需要被代理程序先启动,只要获取到被代理程序进程id,通过loadAgent方法指定动态加载jar包就行了,它属于热插拔式

68120
领券