springboot个性化打包插件 —— maven-assembly-plugin

目录

maven中所有用来打包的插件

在这里主要讲一下maven-assembly-plugin这个插件

首先说一下为什么用到maven-assembly-plugin这个插件

配置文件的参数说明

最后注意


maven中用来打包的插件:

  • maveb-jar-plugin : maven默认打包插件,用来创建project jar
  • maven-shade-plugin : 用来打可执行包(executable jar)
  • maven-assembly-plugin : 支持定制化打包方式

在这里主要讲一下maven-assembly-plugin这个插件

其实assembly 这个插件的主要作用就是:允许用户将项目输出与它的依赖项、模块、站点文档、脚本和其他文件一起组装成一个可分发的归档文件。也就是可以自己个性化、选择性、结构定制化的打包。

代码:

(这一段是在pom.xml的build标签下)

主要注意的是:指定打包文件src/main/assembly/assembly.xml,在该配置文件内指定打包操作

也打包操作的核心内容 很重要,建议在main方法下建一个文件夹。

​ 
    <plugin>
<!--   插件   -->
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
         <configuration>
            <descriptors>
<!--   这个是assembly 所在位置;${basedir}是指项目的的根路径  -->
              <descriptor>${basedir}/src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                    <!--打包解压后的目录名-->
                    <finalName>test</finalName>
                    <!-- 打包压缩包位置-->
                    <outputDirectory>${project.build.directory}</outputDirectory>
                    <appendAssemblyId>false</appendAssemblyId>
          </configuration>
<!--            executions: 该插件的某个goal的执行方式。一个executions有如下属性:-->
<!--            id: 唯一标识。-->
<!--            goals:要执行的插件的goal,如run-->
<!--            phase: 插件的goal要嵌入到Maven的phase中执行,如verify-->
<!--            inherited: 该execution是否可被子项目继承-->
<!--            configuration:该execution的其他配置参数-->
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
         </plugin>

​

这里提示一下,在build标签下可以再添加一段如下代码,可以时自定义jar包名字,不用再默认输出一大段jar包名。而在maven-assembly-plugin插件下的finalname标签则是打包解压后的目录名。

<finalName>${project.artifactId}</finalName>

下面说一下配置文件的参数说明

(也就是上述src/main/assembly/assembly.xml的具体配置)

代码:

<assembly>
<!-- 打包文件名的标识符,用来做后缀-->
    <id>assembly</id>
<!-- formats是assembly插件支持的打包文件格式,有zip、tar、tar.gz、tar.bz2、jar、war。可以同时定义多个format。-->
    <formats>
        <format>tar.gz</format>
    </formats>

    <includeBaseDirectory>true</includeBaseDirectory>

    <fileSets>
<!--    用来设置一组文件在打包时的属性。-->
        <fileSet>
<!--lineEnding选项可用于控制给定的行结束文件  -->
            <lineEnding>unix</lineEnding>
<!-- 指定文件属性,使用八进制表达,分别为(User)(Group)(Other)所属属性,默认为 0644 -->
            <fileMode>0755</fileMode>
<!--        directory:源目录的路径。-->
            <directory>${project.basedir}/src/main/resources</directory>
<!--            outputDirectory:生成目录的路径。-->
            <outputDirectory>${file.separator}</outputDirectory>
<!--            includes/excludes:设定包含或排除哪些文件,支持通配符-->
            <includes>
                <include>application*.yml</include>
                <include>log*.xml</include>
                <include>*.sh</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>${file.separator}</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
    </fileSets>
    

</assembly>

上面一些基础标签已经给定了注释,下面详细解释一下这两个标签

  • <lineEnding>

assembly插件具有lineEnding选项可用于控制给定的行结束文件。最终可以生成zip存档,与CRLF线和tar 。gz存档与LF线。

此时可能的值包括:

  1. "keep" - 保留所有行尾
  2. "unix" - 使用Unix风格行尾 (例如 "n")
  3. "lf" - 使用单个换行符行尾( (例如"n")
  4. "dos" - 使用DOS /Windows样式行尾 (例如 "rn")
  5. "windows" - 使用DOS /Windows样式行尾 (例如 "rn")
  6. "crlf" - 使用回车,换行行尾 (例如 "rn")
  •  <fileMode/>

     与UNIX权限类似,设置包含的目录的目录模式。这是一个 OCTAL VALUE。格式:(用户)(组)(其他)[Format: (User)(Group)(Other) ] 其中每个组件是Read = 4,Write = 2和Execute = 1的总和。
        例如,值0755转换为用户读写,Group和其他只读。

        其默认值是0644.

(在这里说一下这个标签的实际作用,比如我在我的项目下配置一个启动、重启、停止的脚本,一起通过我们这个maven-assembly-plugin插件去一起打包部署到我们的云服务器上,但是这个 <fileMode/>标签的默认值是0644也就是只具有读写权限,没有execute(执行)权限,所以当我们执行脚本是,系统会提示没有权限,还需要使用 chmod +x 命令去给予执行权限。但是此时如果直接在<fileMode/>下设置0755就可以直接执行脚本)

最后注意在使用maven-assembly-plugin插件时还需在build标签下引入如下配置:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <compilerArgument>-parameters</compilerArgument>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值