maven-自定义打包maven-assembly-plugin插件

源码共读

共 4800字,需浏览 10分钟

 ·

2021-05-05 03:09

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇

作者丨Coder技术栈

来源丨匠心Java


插件名称:maven-assembly-plugin目前最新的版本:3.2.0作用:该插件可以使用户根据自己的需求自定义打包规则和打包类型

pom文件配置示例

  1. <plugin>

  2. <groupId>org.apache.maven.plugins</groupId>

  3. <artifactId>maven-assembly-plugin</artifactId>

  4. <version>3.2.0</version>

  5. <configuration>

  6. <finalName>testProject</finalName> <!-- 配置打包后的文件前缀名 -->

  7. <descriptors>

  8. <descriptor>src/main/assembly/package.xml</descriptor> <!-- 配置文件路径 -->

  9. </descriptors>

  10. </configuration>

  11. <executions> <!-- 配置assembly goals -->

  12. <execution>

  13. <id>make-assembly</id>

  14. <phase>package</phase>

  15. <goals>

  16. <goal>single</goal>

  17. </goals>

  18. </execution>

  19. </executions>

  20. </plugin>

package.xml文件自定义打包配置

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <assembly>

  3. <!-- 最终打包文件的后缀,格式为 ${fileName}-bin -->

  4. <id>bin</id>

  5. <!-- 最终打包成一个用于发布的zip文件 -->

  6. <formats>

  7. <format>zip</format>

  8. </formats>


  9. <!-- 把依赖的jar包打包进zip的lib目录下-->

  10. <dependencySets>

  11. <dependencySet>

  12. <!-- 不使用项目的artifact -->

  13. <useProjectArtifact>false</useProjectArtifact>

  14. <!-- 打包进zip文件下的lib目录中 -->

  15. <outputDirectory>lib</outputDirectory>

  16. <!-- 第三方jar不要解压 -->

  17. <unpack>false</unpack>

  18. </dependencySet>

  19. </dependencySets>


  20. <!-- 文件配置 -->

  21. <fileSets>

  22. <!-- 把项目的配置文件,打包进zip包的config目录下 -->

  23. <fileSet>

  24. <!-- 配置项目中需要被打包的文件的存储路径 -->

  25. <directory>${project.basedir}/src/main/resources/${env}</directory>

  26. <outputDirectory>/config</outputDirectory>

  27. <includes>

  28. <!-- 可以指定单个文件 -->

  29. <!--<include>project.config</include>-->

  30. <!-- 可以直接指定所有文件 -->

  31. <include>*.*</include>

  32. </includes>

  33. </fileSet>


  34. <!-- 把项目的配置文件,打包进zip包的根目录下 -->

  35. <fileSet>

  36. <directory>${project.basedir}/src/main/resources/${env}</directory>

  37. <outputDirectory></outputDirectory>

  38. <includes>

  39. <include>scf*.xml</include>

  40. </includes>

  41. </fileSet>


  42. <!-- 把项目自己编译出来根目录下的jar文件,打包进zip文件的根目录 -->

  43. <fileSet>

  44. <directory>${project.build.directory}</directory>

  45. <outputDirectory></outputDirectory>

  46. <includes>

  47. <include>*.jar</include>

  48. </includes>

  49. </fileSet>


  50. <!-- 把项目自己编译出来的jar文件夹下的jar文件,去除第三方jar,打包进zip文件的根目录 -->

  51. <fileSet>

  52. <directory>${project.build.directory}/jar</directory>

  53. <outputDirectory></outputDirectory>

  54. <excludes>

  55. <exclude>lib/*.jar</exclude>

  56. </excludes>

  57. <includes>

  58. <include>*.jar</include>

  59. </includes>

  60. </fileSet>

  61. </fileSets>

  62. </assembly>

运行maven的package后,会进行编译和打包,按照上述的配置会多产生一个 testProject-bin.zip文件 或者直接运行plugins-assembly下的 assembly:single,这样项目不会重新编译,只会将相应的文件按照上述配置打包成 testProject-bin.zip文件

testProject-bin.zip文件解压后的目录结构:- testProject-bin.zip -- testProject -- -- config -- -- -- project.config -- -- -- project2.config -- -- lib -- -- -- log4j-core-2.8.2.jar -- -- -- mybatis-3.2.3.jar -- -- -- ... -- -- testProject.jar -- -- log4j2.xml

下面对上述简单介绍一下

id:添加到打包文件名的标识符,用来做后缀;例如bin,格式为 \${fileName}-binformats:是assembly插件支持的打包文件格式,有zip、tar、tar.gz、tar.bz2、jar、war。可以同时定义多个format;如果按上面的配置,生成的文件就是${fileName}-bin.zip。

dependencySets/dependencySet设置工程依赖文件在打包时的属性。也与fileSets大致相同,不过还有两个特殊的配置:

  • unpack:布尔值,false表示将依赖以原来的JAR形式打包,true则表示将依赖解成*.class文件的目录结构打包。

  • scope:表示符合哪个作用范围的依赖会被打包进去。compile与provided都不用管,一般是写runtime。

fileSets/fileSetfileSet用来设置一组文件在打包时的属性

  • directory:源目录的路径

  • includes/excludes:设定包含或排除哪些文件,支持通配符

  • fileMode:指定该目录下的文件属性,采用Unix八进制描述法,默认值是0644

  • outputDirectory:生成目录的路径

files/file与fileSets大致相同,不过是指定单个文件,还可以通过destName属性来设置与源文件不同的名称

参考:官网:assembly插件官网介

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击👆卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

浏览 4
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报