自定义包
应用场景
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.xml
<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://blog.csdn.net/qq_32736999/article/details/93395246
如何实现打出多个文件的包,且在不同的要求下动态打出不同的包
场景:系统要根据不同的发布方式,组织不同的包,如系统需要同时能打出增量包和全量包,则需要定义多个assembly.xml文件来组织和生成不同的包
当前处理方式:
将研发提交的主pom.xml文件作为基础文件,人工构造出多组pom.xml的插件部分和打包描述文件assembly.xml,然后在编译过程中,根据不同的发布要求构造出不同的pom文件,命名为pom.d.xml(名字可以任意),然后maven构建时通过-f pom.d.xml
的方式引入修改后的POM文件进行打包。优势:隔离了研发提交的pom和打包说明(assembly)
过程
- 基础pom,来源于研发
- 由python代码组织新的pom为pom.d.xml。方案,将特性pom,eg:pom_init.xml,追加到<plugins>后,形成完整的pom(即pom.d.xml)
- mvn调用pom.d.xml文件打包即可
mvn clean install package -f pom.d.xml -Dmaven.test.skip=True
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。