1、pom文件配置如下:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--开启spring-boot热部署-->
                    <fork>true</fork>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <!-- 打包文件名字不包含 assembly.xml 中 id -->
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <!--打包配置 -->
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

图片

Spring 和 Spring Boot 项目架构通过 Maven Assembly Plugin进行打包

2、assembly.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
    <!-- 不配置会报错:Assembly ID must be present and non-empty -->
    <id>bin</id>
    <formats>
        <!--压缩文件的类型-->
        <format>tar.gz</format>
    </formats>
    <!--指明打包后是否有分发包的最外层,如果不写,默认是true-->
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <!--需要包含的文件与输出的路径-->
        <fileSet>
            <!--指明要对src/main/assembly/bin文件夹操作-->
            <directory>src/main/assembly/bin</directory>
            <!--指明经过assembly插件打包后bin目录会放置在项目根目录下-->
            <outputDirectory>bin</outputDirectory>
            <!--指明bin目录下所有文件的权限为755-->
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/assembly/conf</directory>
            <outputDirectory>conf</outputDirectory>
            <fileMode>0644</fileMode>
        </fileSet>
        <fileSet>
            <directory>target</directory>
            <outputDirectory>lib</outputDirectory>
            <!--指明经过assembly插件打包后lib目录会包含哪些jar包-->
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>logs</outputDirectory>
            <fileMode>0755</fileMode>
            <!--指明经过assembly插件打包后logs过滤掉哪些文件-->
            <excludes>
                <!-- **/* 代表是任意路径下任务文件-->
                <exclude>**/*</exclude>
            </excludes>
        </fileSet>
    </fileSets>
</assembly>

图片

Spring 和 Spring Boot 项目架构通过 Maven Assembly Plugin进行打包

3、maven打包

-DskipTests和-Dmaven.test.skip=true的区别是

-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

mvn clean package -Dmaven.test.skip=true
 

4、参考

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

https://www.douban.com/note/207395473/?type=like

相关文章: