Maven 配置文件 POM 的常用插件配置代码
Maven 配置文件 POM 的常用插件配置代码
- 普通
- 将 Maven 多模块依赖集成打进一个 JAR 包(方法 1)
- 将 Maven 多模块依赖集成打进一个 JAR 包(方法 2)
- 生成单入口类 JAR 包
- 生成完整依赖单 JAR 包
- 导出资源文件
- Spring Boot
- 制作 JAR 包
- JavaFX
- 添加在命令行运行 JavaFX 应用的功能
【说明】
本文只是关于 Maven 中的插件(plugin)的 POM 代码。
关于 Maven 的常用依赖配置代码,可见笔者的另一篇博客:
Maven 配置文件 POM 的常用依赖配置代码:
https://blog.csdn.net/wangpaiblog/article/details/112797500
普通
运行环境
JDK 17
Maven 3.6.3
IntelliJ IDEA 2021.2.2 (Ultimate Edition)
将 Maven 多模块依赖集成打进一个 JAR 包(方法 1)
此插件可以用于在 Maven 当前模块中生成本模块的 JAR 包,其中,此 JAR 包含了本模块直接或间接依赖的所有 JAR 包,及它们直接或间接依赖的所有资源文件。如果不在父 POM 使用该插件,则需要提前将此模块依赖的其它模块手动安装至 Maven 仓库中,所以建议在父 POM 中使用该插件。
如果遇到 Maven 多模块中各自的模块有同名同路径的资源文件这种情况,此时打包时只会保留其中的一个。更详细的信息,可见笔者的另一篇博客:
将 Maven 中的多模块项目只打成一个 JAR 包:
https://blog.csdn.net/wangpaiblog/article/details/119628194?spm=1001.2014.3001.5501
使用该插件的命令为:mvn package assembly:single
。
<project xmlns=...><build><plugins><!-- 此插件必须放在父 POM 中 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><executions><!--执行本插件的方法为,在主目录下执行如下命令:mvn package assembly:single对于 IntelliJ IDEA,生成的 JAR 包位于每个模块下的文件夹 target--><execution><id>make-assembly</id><phase>package</phase><goals><!-- 此处 IntelliJ IDEA 可能会报红,这是正常现象 --><goal>single</goal></goals></execution></executions><configuration><archive><manifest><!-- 配置程序运行入口所在的类 --><mainClass>包名.类名</mainClass></manifest></archive><!-- 设置 JAR 包输出目录 --><outputDirectory>${project.build.directory}/#maven-assembly-plugin</outputDirectory><!-- 设置打包后的 JAR 包的目录结构为默认 --><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration></plugin></plugins></build></project>
将 Maven 多模块依赖集成打进一个 JAR 包(方法 2)
此插件可以用于在 Maven 当前模块中生成本模块的 JAR 包,其中,此 JAR 包含了本模块直接或间接依赖的所有 JAR 包,及它们直接或间接依赖的所有资源文件。如果不在父 POM 使用该插件,则需要提前将此模块依赖的其它模块手动安装至 Maven 仓库中,所以建议在父 POM 中使用该插件。
如果遇到 Maven 多模块中各自的模块有同名同路径的资源文件这种情况,此时打包时只会保留其中的一个。更详细的信息,可见笔者的另一篇博客:
将 Maven 中的多模块项目只打成一个 JAR 包:
https://blog.csdn.net/wangpaiblog/article/details/119628194?spm=1001.2014.3001.5501
使用该插件的命令为:mvn package
。
<project xmlns=...><build><plugins><!-- 此插件必须放在父 POM 中 --><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><!--设置将依赖整合到一个自定义名称的 JAR 包。如果不设置此项,依赖将整合到 Maven 无插件时的默认 JAR 包,并生成一个前缀为 original- 的无依赖 JAR 包--><shadedArtifactAttached>true</shadedArtifactAttached><!-- 设置生成的 JAR 包后缀名 --><shadedClassifierName>shaded-with-dependencies</shadedClassifierName><!-- 设置程序运行入口 --><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>包名.类名</mainClass></transformer></transformers><!-- 设置 JAR 包输出目录 --><outputDirectory>${project.build.directory}/#maven-shade-plugin</outputDirectory></configuration></execution></executions></plugin></plugins></build></project>
生成单入口类 JAR 包
此插件可以用于在 Maven 当前模块中生成单入口类 JAR 包。利用此插件生成的 JAR 包,只包含当前模块的文件(包含本模块下的资源文件),虽然不包含任何依赖,但其中设置了程序运行入口类、依赖 JAR 包的相对路径。可以通过将依赖 JAR 包放入指定目录,然后仅通过本 JAR 包(无需在命令行中指定依赖包路径)来运行 Java 应用。因此,本插件一般在程序入口模块使用。本插件往往与插件 maven-dependency-plugin
一起配合使用。
<project xmlns=...><build><plugins><!--此插件可以用于在当前模块中生成单入口类 JAR 包。此插件往往与插件 maven-dependency-plugin 一起配合使用--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><!-- 配置程序运行入口所在的类 --><mainClass>包名.类名</mainClass><!--设置程序的 ClassPath 路径。这指的是在命令行中 java -cp XXX 中 -cp 参数的内容。也就是说,此项为依赖 JAR 包目录。如果设置了此项,且之后把依赖 JAR 包全部放入目录 lib/ 下,然后就可以直接使用 java -jar XXX.jar 来运行本 JAR 包,而无需在命令中指定依赖--><classpathPrefix>lib/</classpathPrefix><addClasspath>true</addClasspath></manifest></archive><!-- 设置 JAR 包输出目录 --><outputDirectory>${project.build.directory}/#maven-jar-plugin</outputDirectory></configuration></plugin></plugins></build></project>
生成完整依赖单 JAR 包
此插件可以用于在 Maven 当前模块中生成完整的依赖单 JAR 包。完整指的是对于本模块直接或间接依赖的 JAR 包都会生成,且这些 JAR 包还各自包含了它们所属模块的资源文件。单 JAR 包指的是生成各依赖包之间互相没有交集(没有重复依赖)。但不生成本模块自身的 JAR 包,所以在此插件的设置中无需设置程序运行入口类。本插件往往与插件 maven-jar-plugin
一起配合使用。
<project xmlns=...><build><plugins><!--此插件是用于生成该模块所直接和间接引用的所有依赖。但生成的不包括自身的 JAR 包,所以在此插件的设置中无需设置程序运行入口类。此插件可在生命周期 package 中被执行。此插件往往与插件 maven-jar-plugin 一起使用--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.2.0</version><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><!-- 设置 JAR 包输出目录 --><outputDirectory>${project.build.directory}/#maven-jar-plugin/lib</outputDirectory><overWriteReleases>true</overWriteReleases><overWriteSnapshots>true</overWriteSnapshots><overWriteIfNewer>true</overWriteIfNewer><includeScope>compile</includeScope></configuration></execution></executions></plugin></plugins></build></project>
导出资源文件
此插件可以用于在 Maven 当前模块中导出本模块所需的资源文件。但生成的资源文件只包含本模块的资源文件,不包括其依赖的其它模块的资源文件,因此作用有限。此插件往往与插件 maven-jar-plugin
、maven-dependency-plugin
一起使用。此插件建议放在父 POM 中使用。
<project xmlns=...><build><plugins><!--此插件是用于拷贝该模块的资源文件指指定目录。但生成的资源文件只包含本模块的资源文件,不包括其依赖的其它模块的资源文件此插件可在生命周期 package 中被执行。此插件往往与插件 maven-jar-plugin、maven-dependency-plugin 一起使用此插件建议放在父 POM 中--><plugin><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><executions><execution><id>copy-resources</id><!-- 设置此插件执行的阶段,可更改为其它阶段 --><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><!-- 设置资源文件输出目录 --><outputDirectory>${project.build.directory}/#maven-resources-plugin</outputDirectory><resources><resource><!-- 设置原资源文件所在目录 --><directory>src/main/resources</directory></resource></resources></configuration></execution></executions></plugin></plugins></build></project>
Spring Boot
制作 JAR 包
对于 Spring Boot 项目,使用常规的生成 JAR 包的插件会引发很多问题,因此,对于它们应该使用如下插件。
<project xmlns=...><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
【注意事项】
使用此插件的 Maven 模块,必须直接或间接继承至 Spring Boot 模块。也就是说,此模块或其直接或间接父模块需要添加如下继承代码。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>Spring Boot 的版本</version> </parent>
- 如果不这么做,使用本插件打包成 JAR 后运行时会有遇到各种问题,如本插件失效,从而打包时不包含依赖等等。
- 如果不这么做,而选择普通方法(将 Spring Boot 视为常规依赖项,然后使用其它插件进行打包),打包成 JAR 后运行时会有遇到各种问题,如运行时提示缺失 Spring Boot 的一些配置文件等等。
本项目的入口类被 Spring Boot 认为是拥有注解
@SpringBootApplication
的类。只有有 Spring Boot 入口类的模块才能运行本插件。另外,如果使用本插件的模块有多于一个的 Spring Boot 入口类,打包时会报错。
当使用了此插件制作 JAR 包后,程序的启动类会变成
org.springframework.boot.loader.JarLauncher
。
JavaFX
运行环境:
JDK 17
JavaFX 17-ea+11
Maven 3.6.3
IntelliJ IDEA 2020.2.2 (Ultimate Edition)
添加在命令行运行 JavaFX 应用的功能
<project xmlns=...><build><plugins><!-- 在本目录下,使用命令 mvn javafx:run 来运行此插件 --><plugin><groupId>org.openjfx</groupId><artifactId>javafx-maven-plugin</artifactId><version>0.0.6</version><executions><execution><id>default-cli</id><configuration><mainClass>包名.类名</mainClass></configuration></execution></executions></plugin></plugins></build></project>
Maven 配置文件 POM 的常用插件配置代码相关推荐
- Maven 配置文件 POM 的常用依赖配置代码
Maven 配置文件 POM 的常用依赖配置代码 Lombok 测试 Junit 5 日志 Log4j2 & SLF4J & Lombok Spring Bean Spring Boo ...
- maven常用插件配置
常用插件配置详解 Java代码 <!-- 全局属性配置 --> <properties> <project.build.name>tools</proj ...
- Maven配置文件POM属性最全详解
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/200 ...
- Maven(5)--常用插件
介绍 在持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便.docker-maven-plugin 插 ...
- maven的pom文件解析及配置
1.IDEA中的Maven的pom.xml文件,其实比较通俗点介绍功能主要项目引入的jar包,管理配置项目以及一些插件的配置等项目 2.对于pom配置详细介绍,整理如下2篇文档介绍的比较系统全面: h ...
- 【Linux vim 入门及渐进过程2 - vim 常用插件配置】
文章目录 1.1 vim 常用配置 1.1.2 vim 别名 alias 配置 1.1.3 vim 终端颜色配置 1.1.3 vim cscope 函数配置 1.1.4 vimrc 配置 1.2 vi ...
- Maven之pom.xml常用标签解析及镜像配置
前言 Maven仅仅是个打包工具而已,个人觉得没有太大必要花费在打包工具上,这里就列举一下个人觉得会常用标签的使用就好了,原理啥的基本就不太会去深度了解了,如果以后遇到需了解Maven工作原理的工作的 ...
- maven配置文件 pom.xml
2019独角兽企业重金招聘Python工程师标准>>> <project xmlns="http://maven.apache.org/POM/4.0.0" ...
- maven中pom.xml中依赖包代码的查询地址
http://mvnrepository.com/ 转载于:https://www.cnblogs.com/wangcp-2014/p/5456672.html
最新文章
- 聊聊RibbonLoadBalancerClient的choose方法
- CG CTF WEB Download~!
- VScode PowerShell运行脚本报错禁止运行脚本解决方式图文
- 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2...
- python自动化办公入门书籍-用Python自动办公,做职场高手 | 「讲文兄博客」
- URLConnection类
- jvm_tool jconsole/ jprofiler/ JProbe/ VirtualVm/ TPV/ YourKit/ ITCAM/ MAT/ MDD4J
- 数据管理(DMS):谁动了线上数据?
- java 将汉字编码_JAVA中的汉字编码问题
- 阿里云VOD 视频点播(一)、nuxt视频上传,视频播放
- 自定义List对象集合排序
- 252个核心词根——词缀(前缀-后缀)总结大全【最全-一文看懂!!!】
- xp访问贡享显示指定服务器,XP访问Win10共享打印机指定的网络名不再可用解决方法...
- pymo闪退android7.0,PYMO引擎
- 电脑风扇转,屏幕、键盘和鼠标都不亮
- 纯Asp实现微信支付
- react之事件绑定(this、传参)
- pta一元多项式求导
- 教育行业的特斯拉,从无人驾驶到无人教学
- Nova Tek Hdmiout 小板调试总结
热门文章
- [HDU3336]Count the string(KMP+DP)
- struts2默认配置文件 struts-default.xml
- 08.self关键字
- 实用 —— PowerCLI (一)
- 08-Windows Server 2012 R2 会话远程桌面-标准部署-使用PowerShell进行部署2-1
- Android ---- Context
- 个人对持续集成的理解和实践
- webServer tomcat5/tomcat6/tomcat7诠释
- dns服务器漏洞修复,KB4569509:DNS 服务器漏洞 CVE-2020-1350 指南
- Feign-自定义配置