maven 打包

79 阅读2分钟

maven 打包工具

使用maven对项目进行打包,可用以下三种plugin

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

maven-assembly-plugin 打包插件使用

在pom文件中引入插件

build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </descriptors>
                <finalName>${project.artifactId}</finalName>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

</build>

配置assembly.xml

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>package</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <outputDirectory>bin</outputDirectory>
            <directory>src/main/bin</directory>
            <fileMode>0755</fileMode>
            <lineEnding>unix</lineEnding>
            <filtered>true</filtered>
            <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
        <fileSet>
            <outputDirectory>resources</outputDirectory>
            <directory>src/main/resources</directory>
            <fileMode>0644</fileMode>
            <filtered>false</filtered>
            <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
        <fileSet>
            <outputDirectory>conf</outputDirectory>
            <directory>src/main/conf</directory>
            <fileMode>0644</fileMode>
            <lineEnding>unix</lineEnding>
            <filtered>false</filtered>
            <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
    </fileSets>
</assembly>

assembly.xml 文档结构

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id> id标识符,添加到生成文件名称的后缀符。如上面配置package,打包后文件尾部添加package后缀</id>
    <formats>
        <format>支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式</format>
    </formats>
    <includeBaseDirectory>是否包含项目根目录,true-包含根目录;false-不包含根目录</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>依赖jar包以及项目打包文件存储文件目录</outputDirectory>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <outputDirectory>指定文件集合的输出目录,该目录是相对于根目录</outputDirectory>
            <includes>包含文件</includes>
            <excludes>排除文件</excludes>
            <directory>指定要打包的文件目录</directory>
            <fileMode>文件权限</fileMode>
            <directoryMode>目录权限</directoryMode>
            <lineEnding>设置此文件集中文件的行结束符。有效值: “keep” - 保留所有的行结束 “unix” - 使用Unix风格的行尾(即“\ n”) “lf” - 使用一个换行符结束符(即“\ n”) “dos” - 使用DOS / Windows风格的行尾(即“\ r \ n”) “windows” - 使用DOS / Windows风格的行尾(即“\ r \ n”) “crlf” - 使用回车,换行符结尾(即“\ r \ n”)</lineEnding>
            <filtered>是否在复制文件时过滤符号,使用构建配置中的属性。(从2.2-beta-1开始) 默认值是:false。</filtered>
            <useDefaultExcludes>在计算受该集合影响的文件时,是否应该使用标准排除模式,例如那些匹配CVS和Subversion元数据文件的排除模式。为了向后兼容,默认值是true。(从2.2-beta-1开始) 默认值是:true。</useDefaultExcludes>
        </fileSet>
    </fileSets>
</assembly>