通常一个团队开发的代码会分环境运行,线下测试环境和线上生产环境当然不能使用同一套资源,例如数据库、redis、ftp等都需要专用。针对这种情况,jenkins在做自动编译打包部署时,就需要我们能够支持针对不同环境部署替换不同的配置文件,例如数据库配置文件、redis配置文件等。本文将介绍如何使用ant脚本编译时进行配置文件替换。
通过ant脚本的Copy Task实现文件的复制;通过Ant工具的Copy任务可以让程序在Windows和Linux/UNIX下对文件和目录进行复制操作;
1、单个文件复制
在当前目录复制sourfile.txt,并把复制的文件命名为copyfile.txt;
把当前目录文件下的sourfile.txt复制到与当前目录同级的some目录的/other/dir子目录下。这里“..”代表相对路径(当前目录的上一级目录)。
2、对文件目录进行复制:
把src_dir目录复制到../new/dir目录下。有时对文件进行复制时需要对文件进行备份。下面举一个复制文件时对文件进行备份的例子。
把src_dir目录及其子目录下所有非Java文件复制到../backup/dir目录下,并重命名为bak文件,以作备份。
3、执行copy task时使用文件过滤(一个复制文件的同时替换文件中的特殊符号)
把src_dir目录下的所有文件复制到../backup/dir目录,并在所有文件中查找并替换@TITLE@为Foo Bar。
当要进行新产品发布时通过需要替换文件中的版本信息和时间信息。
说明:在Ant工具中还提供了copydir和copyfile这两个特定的任务,分别用于对目录和文件进行复制。但自从有了Copy任务后,这两个任务已过期,不建议再使用,应该统一使用Copy任务。
其余详情可参考http://ant.apache.org/manual/Tasks/copy.html
1、将替换使用的文件上传到gitlab
先将替换文件放置到工程根目录下,本工程新建copy_conf文件目录,存放替换文件,如下:
copy_conf文件夹内替换文件如下:
2、修改ant编译的build.xml脚本,去自动抓取copy_conf文件夹中文件
target:来规定copy任务的指定顺序。
3、上传到gitlab,开启jenkins构建即可
ant编译执行的顺序:
copyTest-->clean-->init-->build-->warFile-->build
大坑:
如果我们上述copy_conf文件夹中的.properties文件没有发生修改,或者是修改后未提交到gitlab,那么ant脚本中的
而正常的运行结果应该是:
解决方案:
1、放弃
2、在init初始化时,新建一个配置文件中转站(reconf_dir文件夹),将copyTest文件夹中的文件复制到reconf_dir文件夹中;
3、将reconf_dir文件夹中的配置文件复制到WebRoot/WEB-INF/classes文件夹中,为打war包做好准备;
4、每次执行ant脚本构建时,先删除reconf_dir文件夹,然后新建reconf_dir文件夹,最后执行第二步的拷贝。
最后附上项目的build.xml文件(注:只包含target部分)
版权声明:本文为博主原创文章,未经博主允许不得转载。
https://blog.csdn.net/ChenLeihappy/article/details/80103916