Maven打自定义包(分发包)

自定义包

应用场景

maven打包完成后(打成jar/war包),需要进一步将生成的jar/war包与其他文件(如资源文件、配置文件、数据库脚本等)打包成一个zip/tar.gz,用于归档获取推送到测试/运行服务器

工具

编译发布工具:maven

插件:maven-assembly-plugin

原理及配置

配置

在主pom(顶层pom,目前我们是全部打包)中的下图区域中加入插件的配置。

配置位置:

<build>
        <plugins>
        <!--添加maven-asselbly插件-->
        </plugins>
    </build>

配置内容:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>版本号<version>
            <executions>
                <execution>
                    <id>make-assembly1</id>
                    <!-- 绑定到package生命周期 -->
                    <phase>package</phase>
                    <goals>
                        <!-- 只运行一次 -->
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <!-- 配置描述符文件 -->
                            <descriptor>assembly_vgs.xml</descriptor>
                            <finalName>vgs</finalName>
                            <!-- 也可以使用Maven预配置的描述符
                                                                     <descriptorRefs>
                                    <descriptorRef>jar-with-dependencies</descriptorRef>
                                </descriptorRefs> -->
                    </configuration>
                </execution>
            </executions>
            <configuration>
                <!-- 配置描述符文件 -->
                <descriptor>src/main/assembly/assembly.xml</descriptor>
                <!-- 也可以使用Maven预配置的描述符
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs> -->
            </configuration>
        </plugin>

如果需要打多个包则,添加多个 <execution></execution>
即可

编写打包描述文件

<assembly>
    <id></id>

    <formats>
        <format>zip</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <fileSets>
        <!--发布模板及静态第三方文件引入,由于来自其他项目(health_installer)
        如果构建项目名称改变需要将Jenkins_install替换成新的项目-->

        <!--前置机的组包-->
        <fileSet>
            <directory>health-services/target/</directory>
            <!--服务lib包-OK-->
            <includes>
                <include>services-c3m-*.jar</include>
            </includes>
            <outputDirectory>c3m</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>bin/components/config</directory>
            <!--软件配置文件目录-OK -->
            <includes>
                <include>application-common.properties</include>
                <include>application-c3m.properties</include>
            </includes>
            <outputDirectory>c3m/config</outputDirectory>
        </fileSet>
    </fileSets>
   <!--
    <files>
        <file>
            <source>${project.artifactId}-${project.version}.jar</source>
            <outputDirectory>.</outputDirectory>
        </file>
    </files>
    -->
    <dependencySets>
        <dependencySet>
            <unpack>false</unpack>
            <!--<scope>runtime</scope>-->
            <outputDirectory>lib</outputDirectory>
        </dependencySet>
    </dependencySets>
</assembly>

示例

原文 

https://segmentfault.com/a/1190000022584716

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Maven打自定义包(分发包)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址