maven打包插件

server/2024/9/22 12:25:53/

非Springboot项目打包,将自己的程序和依赖打成一个jar包

前言

即使在pom.xml文件中没有配置任何plugin,maven也会默认设置一些插件,如其中的maven-jar-plugin插件
在这里插入图片描述
执行 package 打包时,maven 会使用maven-jar-plugin插件打包,这种方式打的包中只含有自己写的程序和资源文件,不包含程序依赖的其他jar包,而且在META-INF/MANIFEST.MF文件中没有配置Main-class属性值

mavencompilerplugin_7">maven-compiler-plugin

负责编译源码,可指定编译的jdk版本

mavenresourceplugin_9">maven-resource-plugin

复制资源文件到指定的目录中(如输出目录中),默认是打包jar包中。例如我们希望在打包时,将配置文件放到jar包外部,这样在修改配置文件时,就不用再重新打包了

mavenjarplugin_11">maven-jar-plugin

将项目的类文件和资源文件打成一个jar包,该jar包中不包含依赖的jar包

  • pom.xml文件配置
<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><excludes><exclude>app.properties</exclude></excludes><archive><!-- 控制MANIFESF.MF文件中的信息 --><manifest><addClasspath>true</addClasspath><classpathPrefix>libs/</classpathPrefix><mainClass>com.xxx.Application</mainClass> <!-- 主类全路径名 --></manifest></archive></configuration></plugin>

mavendependencyplugin_35">maven-dependency-plugin

复制项目的依赖到指定目录,如lib目录中,配合上述maven-jar-plugin的配置

    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><!-- 拷贝项目依赖包到lib/目录下 --><outputDirectory>${project.build.directory}/libs</outputDirectory><!-- 间接依赖也拷贝 --><excludeTransitive>false</excludeTransitive><!-- 带上版本号 --><stripVersion>false</stripVersion></configuration></execution></executions></plugin>
  • 执行package
    在这里插入图片描述

mavenassemblyplugin_63">maven-assembly-plugin

更丰富的定制化打包方式。可将本身的程序和所有的依赖打成一个jar包

  • pom.xml文件配置

<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><!--主类全路径名--><mainClass>com.xxx.Main</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>
  • 执行打包
    在这里插入图片描述
  • 结果
    在这里插入图片描述
    执行打包后,在target目录下会生成两个jar包,第一个jar包只包含自己写的程序,第二个jar包不仅包含自己写的程序,还有程序需要的依赖

扩展

若需要更多自定义打包配置,可搭配assembly.xml文件


http://www.ppmy.cn/server/118398.html

相关文章

new/delete和malloc/free到底有什么区别

new和malloc 文章目录 new和malloc前言一、属性上的区别二、使用上的区别三、内存位置的区别四、返回类型的区别五、分配失败的区别六、扩张内存的区别七、系统调度过程的区别总结 前言 new和malloc的知识点&#xff0c;作为一个嵌入式工程师是必须要了解清楚的。new和malloc的…

React项目中使用发布订阅模式

React项目中使用发布订阅模式 1.创建发布订阅器2.在组件中使用发布订阅器3. 订阅数据 发布订阅模式&#xff08;也称观察者模式&#xff09;是一种管理跨组件通信的有效方式&#xff0c;尤其是在不希望直接依赖于特定组件的情况下。这种模式允许一个对象&#xff08;发布者&…

vivado中选中bd文件后generate output product是什么用,create HDL wrapper是什么用

vivado中选中bd文件后generate output product是什么用 在Vivado中&#xff0c;“Generate Output Products” 是一个重要的步骤&#xff0c;它用于生成IP核的输出产品&#xff0c;这些产品是将IP核集成到设计中所需的文件。这些输出产品包括&#xff1a; 综合文件&#xff…

HarmonyOS学习(十)——网络编程

文章目录 1、通过HTTP请求网络2、Web组件2.1、加载本地网页2.2、加载在线网页2.3、网页缩放2.4、文本缩放2.5、web组件事件以及状态说明2.6、处理页面导航 1、通过HTTP请求网络 官方API文档地址&#xff1a;HTTP数据请求-Network Kit数据传输能力-Network Kit&#xff08;网络…

中秋节程序员一般在干啥?

中秋节作为一个传统的中国节日&#xff0c;主要庆祝活动围绕着家庭团聚、赏月、吃月饼等文化习俗展开。然而&#xff0c;对于程序员这个职业群体来说&#xff0c;他们的中秋节活动可能因工作性质和个人安排而有所不同。但大致上&#xff0c;程序员在中秋节期间可能会有以下几种…

嵌入式软件工程师:科技浪潮中的关键角色

嵌入式软件工程师&#xff1a;科技浪潮中的关键角色 一、嵌入式软件工程师的职业魅力 &#xff08;一&#xff09;市场需求旺盛 嵌入式软件工程师在当今科技领域中扮演着至关重要的角色。随着智能化时代的到来&#xff0c;嵌入式系统在各个行业的应用越来越广泛&#xff0c;市…

kaggle竞赛(Deepfake检测)的核心流程【notebook 运行演示】

关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 notebook 链接 从kaggle竞赛零基础上手CV实战 kaggle竞赛&#xff08;Deepfake检测&#xff09;的核心流程 赛题介绍环境配置&#xff08;准备工作&#xff09;数据集神经网络/深度学习的组成元素训练策略/训练…

Linux第五章 文本编辑器vim

Linux第五章 文本编辑器vim 文章目录 Linux第五章 文本编辑器vim常用操作使用技巧 常用操作 vim简介 vi/vim是一个功能强大的全屏幕文本编辑器, 作用是创建, 编辑, 显示文本文件. 它没有菜单, 只有命令. vim工作模式 编辑 进入编辑模式 命令作用i在光标所在字符前插入a在光…