Maven工程产生Jar时Main-Class和Class-Path的配置文件

maven打包的5种方式总有一款适合你【超赞】 1.用于生成META-INF/MANIFEST.MF文件的部分内容,com.xxg.Main指定MANIFEST.MF中的Main-Class,true会在MANIFEST.MF加上Class-Path项并配置依赖包,lib/指定依赖包所在目录。2.maven-dependency-plugin插件。 阅读详情

写这篇博客主要是为了自己以后能快速的查到。

 

在pom.xml文件的project节点中加入以下build内容:

 

[html]  view plain  copy
  1. <build>  
  2.     <plugins>  
  3.         <plugin>  
  4.             <groupId>org.apache.maven.plugins</groupId>  
  5.             <artifactId>maven-jar-plugin</artifactId>  
  6.             <version>2.3.2</version>  
  7.             <configuration>  
  8.                 <archive>  
  9.                     <manifest>  
  10.                         <!--change addClasspath to true if daks is desktop version-->  
  11.                         <addClasspath>true</addClasspath>  
  12.                         <classpathPrefix>lib/</classpathPrefix>  
  13.                         <mainClass>com.daks.timesheethelper.App</mainClass>  
  14.                         <addDefaultImplementationEntries>true</addDefaultImplementationEntries>  
  15.                         <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>  
  16.                     </manifest>  
  17.                     <manifestEntries>  
  18.                         <Permissions>${Permissions}</Permissions>  
  19.                         <Caller-Allowable-Codebase>${Caller-Allowable-Codebase}</Caller-Allowable-Codebase>  
  20.                     </manifestEntries>  
  21.                 </archive>  
  22.             </configuration>  
  23.         </plugin>  
  24.         <plugin>  
  25.             <groupId>org.apache.maven.plugins</groupId>  
  26.             <artifactId>maven-dependency-plugin</artifactId>  
  27.             <version>2.3</version>  
  28.             <executions>  
  29.                 <execution>  
  30.                     <id>copy-dependencies</id>  
  31.                     <phase>package</phase>  
  32.                     <configuration>  
  33.                         <overWriteReleases>false</overWriteReleases>  
  34.                         <overWriteSnapshots>false</overWriteSnapshots>  
  35.                         <overWriteIfNewer>true</overWriteIfNewer>  
  36.                         <outputDirectory>  
  37.                             ${project.build.directory}/lib  
  38.                         </outputDirectory>  
  39.                     </configuration>  
  40.                     <goals>  
  41.                         <goal>copy-dependencies</goal>  
  42.                     </goals>  
  43.                 </execution>  
  44.             </executions>  
  45.         </plugin>  
  46.     </plugins>  
  47. </build>  

 

最终的效果就是在target下多出一个lib目录,里面包含项目使用到的一些第三方的jar,或者自己的其他工程的jar,然后主jar包的MF文件中多了Main-Class和Class-Path的配置信息,这是保证该jar包可执行的条件。



------------------------------------------

Xml代码   收藏代码
  1. <configuration>  
  2.  <archive>  
  3.   <manifest>  
  4.    <mainClass>com.dongwei.test.Main</mainClass>  
  5.    <addClasspath>true</addClasspath>  
  6.    <classpathPrefix>lib/</classpathPrefix>  
  7.   </manifest>  
  8.   <manifestEntries>  
  9.    <Class-Path>.</Class-Path>  
  10.   </manifestEntries>  
  11.  </archive>  
  12. </configuration>   

 由于某些原因,如果maven生成的MANIFEST.MF中的Class-Path的内容缺少一些内容,比如当前执行目录(.),那么可以通过上面manifestEntries的方式增加进来,增加后的效果:

Java代码   收藏代码
  1. Manifest-Version: 1.0  
  2. Archiver-Version: Plexus Archiver  
  3. Created-By: Apache Maven  
  4. Built-By: wei.dong  
  5. Build-Jdk: 1.6.0_24  
  6. Main-Class: com.dongwei.test.Main  
  7. Class-Path: . lib/spring-core-3.0.5.RELEASE.jar lib/spring-asm-3.0.5.R  
  8.  ELEASE.jar lib/commons-logging-1.1.1.jar lib/spring-context-3.0.5.REL  
  9.  EASE.jar lib/spring-aop-3.0.5.RELEASE.jar lib/aopalliance-1.0.jar lib  
  10.  /spring-expression-3.0.5.RELEASE.jar lib/spring-context-support-3.0.5  
  11.  .RELEASE.jar lib/spring-beans-3.0.5.RELEASE.jar lib/spring-jdbc-3.0.5  
  12.  .RELEASE.jar lib/spring-tx-3.0.5.RELEASE.jar lib/log4j-1.2.14.jar lib  
  13.  /slf4j-nop-1.4.3.jar lib/slf4j-api-1.4.3.jar lib/commons-lang-2.5.jar  
  14.   lib/commons-dbcp-1.2.2.jar lib/commons-pool-1.3.jar lib/commons-io-1  
  15.  .4.jar lib/commons-digester-2.0.jar lib/commons-beanutils-1.8.0.jar l  
  16.  ib/commons-configuration-1.6.jar lib/commons-collections-3.2.1.jar li  
  17.  b/commons-beanutils-core-1.8.0.jar lib/quartz-1.8.4.jar lib/jta-1.1.j  
  18.  ar lib/mysql-connector-java-5.1.12.jar  

Maven打包全解析:从Jar包原理到Spring Boot实战 在Java开发中,Jar包作为代码交付的标准格式,其打包方式直接影响应用的部署与运行。理解Jar包的本质——一个包含MANIFEST.MF清单文件的特殊ZIP压缩包,是掌握打包技术的基础。Maven作为主流构建工具,通过其生命周期管理和插件机制,提供了多种打包策略,从仅包含项目代码的“瘦Jar”到集成所有依赖的“Fat Jar”,每种方式都对应不同的应用场景。在工程实践中,合理选择打包方式能有效解决依赖冲突、资源加载等常见问题,提升部署效率。本文聚焦于**Maven打包**和**可执行Jar**这两个核心热 阅读详情

相关推荐

BUUCTF逆向题Youngter-drive

其实线程一代码我自己也不大理解,看了正确的 flag 后,我自己推出来的是这样:在 couece 中取出字符,然后在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中找出一样的,取出该字符在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中的下标,如果取出的字符是大写则 在ASCII中找出【下标 - 38】值对应的字符替换couece中的字符,同理,小写就减 96。

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1098

maven整合远程jar包和本地jar包打包部署

Maven项目引入本地jar包详细实践方法总结,以及对本地jar包打包部署

u011442726的博客 5169

【首份】2023年30米分辨率土地利用遥感监测数据

为了恢复和重建我国土地利用变化的现代过程,更好地预测、预报土地利用变化趋势,地球资源数据云以美国陆地卫星Landsat 遥感影像数据作为主信息源,结合Sentinel系列数据,通过人工目视解译和机器学习方法,建立了国家尺度1:10 万比例尺多时期土地利用/土地覆盖遥感监测数据库(CNLUCC)因早期Landsat数据时空覆盖缺失,1972-1977年合成第一期数据,1978-1985年合成第二期数据,1986年起每年度生成一期数据。投影:Albers正轴等面积双标准纬线圆锥投影南标准纬线:25°N。

地球资源数据云的官方博客 3686

Maven打包可执行Jar包含依赖Jar包

pom.xml文件配置 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version&g

Bret的技术栈 498

c++ mysql_init 返回无效指针_C++操作MYSQL遇到的一些问题

首先 我使用的是 vcpkg上面是我装的一些库《大大安利vcpkg 安装时一定要使用powershell进行编译装上vcpkg后装ligmariadb这个库,这个对Mysql操作还是挺方便的,然后说一下 在装库时碰到的一些问题1.网络问题1.参考了一下 github上的答案 将下载失败的url拷下来 自己下 然后再重新开始安装《vcpkg在安装时每一个需要下载的 都会提供url-仔细找,2.这个问...

weixin_32176627的博客 681

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

python03011的博客 3754

maven-jar-plugin插件打包时多classpath情况如何处理

多classpath前缀 (classpathPrefix)如何设置

wyangue的博客 1801

ETL第八章无人售货机零售项目实践

ETL实战项目——无人售货机

m0_52058217的博客 4418

【转载】用maven在MANIFEST.MF文件中的Class-Path中增加当前目录(.)

转载自:https://www.cnblogs.com/byron0918/p/4825343.html Xml代码 <configuration> <archive> <manifest> <mainClass>com.dongwei.test.Main</mainClass> <addClasspath>true</addClasspath> <classpathPref

qq_41440875的博客 1711

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2208

ultralytics.data.utils——utils.py子模块代码详读

ultralytics.data.utils——utils.py子模块代码详读

Together_CZ的博客 1722

maven工程打包成runnable的jar包,拷贝资源和依赖jar包

方法一:将项目及所依赖的所有jar包打包成一个jar。 1、pom.xml添加assembly插件(放在最外层)   2、执行在所在跟部门中执行命令mvn assembly:assembly   3、target文件夹中生成如下文件   4、执行java -jar quickstart-1.0.0-jar-with-dependencies

残缺的歌的专栏 3511

基于信号完整性的PCB设计原则

基于信号完整性的PCB设计建议,以单网络的信号布线作为评估对象,给出了一些最基础的设计指导,如何灵活运用,取决于设计者根据实际场景如何做取舍和判断。

一只豌豆象的博客 1759

java jar metainf_jar包中META-INF文件作用

通常,一个工程下会有很多个java文件,以及会依赖很多外部的jar库,我们在运行该工程时一般会将其打包成一个jar,然后指定main方法以及依赖的第三方jar来运行。结构如下:1、首先我们介绍一下jar文件和manifest:JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MAN...

weixin_35064481的博客 1016

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

如何将maven项目打包成可执行的jar

1、pom.xml添加assembly插件maven-assembly-plugin2.2cn.ceopen.demo.Appjar-with-dependencies

symgdwyh的专栏 5万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Maven打包全解析:从普通Jar到Spring Boot Fat Jar的实战指南

在Java项目构建与部署中,Jar包是代码交付的核心载体。其打包方式直接决定了应用的部署形态和运行效率。从原理上讲,Maven通过不同的插件机制,实现了多种打包策略:普通Jar仅包含项目编译后的类文件,作为类库供其他项目依赖;可执行Jar(Fat Jar)则通过嵌套或融合技术将项目及其所有依赖打包为一个独立运行单元,实现了环境一致性;而依赖分离式Jar则将业务代码与第三方库分离,优化了容器化部署时的镜像构建效率。这些技术为不同应用场景提供了灵活选择:公共库开发需用普通Jar保证依赖纯净,Spring Boo

weixin_34417183的博客 443

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java class class_classpath和jar

在Java中,我们经常听到classpath这个东西。网上有很多关于“如何设置classpath”的文章,但大部分设置都不靠谱。到底什么是classpath?classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class。因为Java是编译型语言,源码文件是.java,而编译后的.class文件才是真正可以被JVM执行的字节码。因此,JVM需要知道,如果要加载一个abc.xyz....

weixin_36377635的博客 208

深入解析:如何修复Maven打包后缺失主清单属性的JAR文件

本文深入解析了Maven打包后JAR文件缺失主清单属性的常见问题。针对Spring Boot项目和普通Java项目,分别提供了使用spring-boot-maven-plugin和maven-shade-plugin的核心修复方案,并详细说明了配置方法、进阶排查技巧与常见陷阱,帮助开发者彻底解决JAR文件无法直接运行的问题。

weixin_28834765的博客 264

maven打包jar指定 Main-Class

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34378969的博客 549

Java JAR打包全攻略:从手动打包到Maven/Gradle自动化构建

在Java开发中,打包是将源代码和资源文件封装为可分发格式的关键步骤。其核心原理是通过ZIP格式的归档文件,结合清单文件(MANIFEST.MF)定义主类和类路径,实现程序的独立运行。这项技术的价值在于简化了Java应用的部署流程,使得开发者能够将复杂的项目结构转化为单一的可执行文件。在实际应用场景中,无论是桌面应用、工具脚本还是库文件分发,打包都是不可或缺的环节。本文聚焦于JAR文件打包,详细解析了手动打包的底层机制,并深入探讨了如何利用Maven和Gradle等构建工具实现自动化打包,帮助开发者掌握从源

weixin_34357887的博客 391

Maven 基础、Settings、JAR包说明

Maven工程

Lyndon的专栏 806

META-INF文件详解

META-INF文件详解 java工程的JAR 文件中,会包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。该文件中最重要的两个信息是: Class-Path:指定执行运行jar时的classpath; Main-Class:指定运行时的main方法所在类; 1)如果我们打包时没...

weixin_42248302的博客 1万+

jar包中META-INF文件作用

通常,一个工程下会有很多个java文件,以及会依赖很多外部的jar库,我们在运行该工程时一般会将其打包成一个jar,然后指定main方法以及依赖的第三方jar来运行。结构如下: 1、首先我们介绍一下jar文件和manifest: JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META

赶路人儿 1万+

maven-将maven工程打包成可执行jar包

为什么80%的码农都做不了架构师?>>> ...

weixin_34258078的博客 132
上一篇: MySQL与PostgreSQL的 SELECT FOR UPDATE
下一篇: SonarQube代码质量管理平台安装与使用
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值