爆炸EAR文件

时间:2012-04-16 13:22:25

标签: jsf java-ee war ear

我的JSF项目被部署为EAR文件。它还包括一些战争文件。我需要EAR的爆炸版本(包括爆炸的内部WAR)。

有没有工具可以做到?

2 个答案:

答案 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