4

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

有什么工具可以做到吗?

4

2 回答 2

5

以编程方式还是手动?EAR 和 WAR 文件与 JAR 文件一样,实际上只是具有已知内部文件/文件夹结构的 ZIP 文件。这意味着您可以像任何其他 ZIP 文件一样使用代码或使用桌面应用程序来提取 EAR 和 WAR。


windows的命令行工具会很棒。

于 2012-04-16T13:25:38.997 回答
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
于 2014-05-05T13:48:11.557 回答