实际项目开发-Maven assembly plugin统一打包方式

1.前言

我们开发的项目越来越多了,然后我们如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,使用maven的assembly插件完美的实现了该需求,爽爆了有木有。


2.看一看

这里写图片描述

我们如何打包呢?
这里写图片描述
打包完成后,我们可以看到bin目录来存放启动脚本等文件,com为class文件,lib下为运行时依赖的jar包。


3.如何使用

1.首先我们需要在pom.xml中配置maven的assembly插件

  <build>
        <finalName>cxx</finalName>
        <plugins>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors> <!--描述文件路径-->
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>  <!--执行器 mvn assembly:assembly-->
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

接着我们在src/main/assembly文件中配置assembly.xml文件

<assembly>
    <id>assembly</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>target/classes</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>**/**</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>${project.basedir}\src\main\bin</directory>
            <outputDirectory>\bin</outputDirectory>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <!-- 将scope为runtime的依赖包打包到lib目录下。 -->
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
</assembly>

打包:mvn assembly:assembly


说明

format设置包输出的格式,以上格式设置的为zip格式,目前还支持zip,tar,tar.gz,tar.bz2,jar,dir,war格式
fileSet定义代码目录中与输出目录的映射,在该节点下还有 ,两个非常有用的节点。

  <fileSet>
            <directory>${project.basedir}\src\main\resources</directory>
            <outputDirectory>\</outputDirectory>
            <includes>
                <include>some/path</include>
            </includes>
            <excludes>
                <exclude>some/path1</exclude>
            </excludes>
</fileSet>

以上代码表示归档时包括some/path,不包括some/path1


dependencySets节点下为依赖设置
在上述配置中,表示所有运行时依赖的jar包归档到lib目录下。在上述截图中lib目录下的文件就是所有依赖的jar包


4.总结

随着微服务的越来越火,将服务进行细粒度拆分后,也需要很好的把服务的打包以及部署方式进行统一,这样我们就可以走自动化发布工具来进行统一服务的管理和部署,使得越来越方便。

猜你喜欢

转载自blog.csdn.net/m0_37499059/article/details/81037290
今日推荐