2

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

所以我需要编写一个脚本来更新 WAR 中的这些文件。请让我知道以上是否可以使用 Jython 脚本或建议任何其他可以实现的脚本。

4

1 回答 1

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()
于 2013-05-06T10:58:38.673 回答