我的JSF项目被部署为EAR文件。它还包括一些战争文件。我需要EAR的爆炸版本(包括爆炸的内部WAR)。
有没有工具可以做到?
答案 0 :(得分:4)
以编程方式,还是手动? EAR和WAR文件(如JAR文件)实际上只是具有已知内部文件/文件夹结构的ZIP文件。这意味着您可以像任何其他ZIP文件一样,使用代码或桌面应用程序提取EAR和WAR。
Windows的命令行工具会很棒。
答案 1 :(得分:3)
马特的回答很有帮助,但有时候把它写给你是件好事。
这是我编写的一个shell脚本来解决这个问题,我实际上是在Cygwin中运行但也可能在Linux中运行。它将解压缩,战争,耳朵或罐子,并保持解压缩直到递归,直到没有留下。您可能希望使用" diff -r ear1.ear-contents ear2.ear-contents"在结果目录上比较两个ear文件。
#!/bin/sh
rm -rf ${1}-contents
mkdir ${1}-contents
echo "Unpacking ${1} to ${1}-contents"
unzip -d ${1}-contents ${1}
cd ${1}-contents
FILES_TO_PROCESS=`find . -type f \( -name "*.ear" -or -name "*.war" -or -name "*.jar" \)`
until [ "$FILES_TO_PROCESS" == "" ] ; do
for myFile in $FILES_TO_PROCESS ; do
mkdir ${myFile}-contents
echo "Unpacking ${myFile} to ${myFile}-contents"
unzip -d ${myFile}-contents ${myFile}
rm $myFile
done
FILES_TO_PROCESS=`find . -type f \( -name "*.ear" -or -name "*.war" -or -name "*.jar" \)`
echo "recursing to process files: $FILES_TO_PROCESS"
done