在maven打包时,可以利用assembly插件自定义生成包的结构。在打包的时候希望能够灵活的通过简单的参数将应用于不同环境下的配置文件打进包里。
比如生成windows下运行的包和linux下运行的包,配置文件或脚本文件中但凡涉及到路径的地方都是不一样的,我们可能单独维护了windows和linux下的不同的配置文件及脚本文件,那么在打包的时候就希望能够将其中我们需要的一套文件打进包里了。当然了全打包进去也行,那就要在程序运行的时候多输入一个参数来指定用哪套配置,这对于开发人员没什么区别,但对于产品交付区别就会很大,如果是交付给一个电脑小白型客户,是不能指望他在命令行启动程序并记得输入正确的参数的。
这样问题就清楚了,我们在打包时就知道生成的目标程序(或一系列资源包的组合)是运行在什么环境下的,我们提前准备好了应对不同环境的配置文件及脚本文件,我们希望能够在打包时通过简单的一个参数就指定使用我们准备好的哪套配置或脚本文件(因为这种文件可能非常多,指望开发人员每次打包前修改配置指向正确的配置文件也不现实。。。)。
一、pom.xml添加assembly插件
assembly插件通过xml文件配置打包参数,descriptor标签指定assembly插件的xml配置文件。
finalName标签指定pom.xml配置的maven工程打包后target路径下所有依赖于assembly插件打包的文件根目录。
如果想把各个子module生成的jar包统一收纳到一个位置方便主jar包进行调用的话,就可以指定一个plugin根目录;
如果想把各种配置文件统一收纳到一个位置方便各jar包进行调用的话,就可以指定一个config根目录;
dataX是整体使用assembly插件打包的,需要把启动的python脚本、框架核心包、公共工具包、各插件(reader/writer)包