用于修改WAR内部文件的脚本

时间:2013-05-03 14:16:04

标签: war jython resourcebundle

我需要为不同的环境更新WAR内的资源文件(例如数据库信息)

所以我需要编写一个脚本来更新WAR中的这些文件。如果可以使用Jython Scripts或建议任何其他可以实现的脚本,请告诉我。

1 个答案:

答案 0 :(得分:0)

虽然.war文件格式与.zip文件格式完全相同,但您可以使用zipfile模块处理这些文件。遗憾的是,ZipFile个对象不允许修改现有.zip文件中的文件,因此您必须从源.war复制所有文件并修改所选文件的内容。例如:

def modify_war(war):
    if os.path.exists(war):
        zf_in = zipfile.ZipFile(war, 'r')
        zf_out = zipfile.ZipFile(war[:-4] + '_new.war', 'w')
        try:
            for item in zf_in.infolist():
                content = zf_in.read(item.filename)
                if item.filename == 'META-INF/MANIFEST.MF':
                    content += '\nModified-By: mn\n'
                zf_out.writestr(item, content)
        finally:
            zf_in.close()
            zf_out.close()