我需要为不同的环境更新WAR内的资源文件(例如数据库信息)
所以我需要编写一个脚本来更新WAR中的这些文件。如果可以使用Jython Scripts或建议任何其他可以实现的脚本,请告诉我。
答案 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()