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-pluginmaven-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 的常用插件配置代码相关推荐

  1. Maven 配置文件 POM 的常用依赖配置代码

    Maven 配置文件 POM 的常用依赖配置代码 Lombok 测试 Junit 5 日志 Log4j2 & SLF4J & Lombok Spring Bean Spring Boo ...

  2. maven常用插件配置

    常用插件配置详解 Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proj ...

  3. Maven配置文件POM属性最全详解

    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/200 ...

  4. Maven(5)--常用插件

    介绍 在持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便.docker-maven-plugin 插 ...

  5. maven的pom文件解析及配置

    1.IDEA中的Maven的pom.xml文件,其实比较通俗点介绍功能主要项目引入的jar包,管理配置项目以及一些插件的配置等项目 2.对于pom配置详细介绍,整理如下2篇文档介绍的比较系统全面: h ...

  6. 【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 ...

  7. Maven之pom.xml常用标签解析及镜像配置

    前言 Maven仅仅是个打包工具而已,个人觉得没有太大必要花费在打包工具上,这里就列举一下个人觉得会常用标签的使用就好了,原理啥的基本就不太会去深度了解了,如果以后遇到需了解Maven工作原理的工作的 ...

  8. maven配置文件 pom.xml

    2019独角兽企业重金招聘Python工程师标准>>> <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  9. maven中pom.xml中依赖包代码的查询地址

    http://mvnrepository.com/ 转载于:https://www.cnblogs.com/wangcp-2014/p/5456672.html

最新文章

  1. 聊聊RibbonLoadBalancerClient的choose方法
  2. CG CTF WEB Download~!
  3. VScode PowerShell运行脚本报错禁止运行脚本解决方式图文
  4. 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2...
  5. python自动化办公入门书籍-用Python自动办公,做职场高手 | 「讲文兄博客」
  6. URLConnection类
  7. jvm_tool jconsole/ jprofiler/ JProbe/ VirtualVm/ TPV/ YourKit/ ITCAM/ MAT/ MDD4J
  8. 数据管理(DMS):谁动了线上数据?
  9. java 将汉字编码_JAVA中的汉字编码问题
  10. 阿里云VOD 视频点播(一)、nuxt视频上传,视频播放
  11. 自定义List对象集合排序
  12. 252个核心词根——词缀(前缀-后缀)总结大全【最全-一文看懂!!!】
  13. xp访问贡享显示指定服务器,XP访问Win10共享打印机指定的网络名不再可用解决方法...
  14. pymo闪退android7.0,PYMO引擎
  15. 电脑风扇转,屏幕、键盘和鼠标都不亮
  16. 纯Asp实现微信支付
  17. react之事件绑定(this、传参)
  18. pta一元多项式求导
  19. 教育行业的特斯拉,从无人驾驶到无人教学
  20. Nova Tek Hdmiout 小板调试总结

热门文章

  1. [HDU3336]Count the string(KMP+DP)
  2. struts2默认配置文件 struts-default.xml
  3. 08.self关键字
  4. 实用 —— PowerCLI (一)
  5. 08-Windows Server 2012 R2 会话远程桌面-标准部署-使用PowerShell进行部署2-1
  6. Android ---- Context
  7. 个人对持续集成的理解和实践
  8. webServer tomcat5/tomcat6/tomcat7诠释
  9. dns服务器漏洞修复,KB4569509:DNS 服务器漏洞 CVE-2020-1350 指南
  10. Feign-自定义配置