Листинг JAR в рамках WAR - PullRequest
0 голосов
/ 30 июля 2011
jar -tvf hello.war

Тем не менее, мой .war также содержит некоторые .jar в папке lib в .war.

Мне нужна команда для отображения содержимого всех .jar в пределах .war.

Причина, по которой мне нужна командная строка, а не использовать такие инструменты, как Winrar, заключается в том, что мне нужно включить ее в мой сценарий оболочки UNIX.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2011

Не очень полезен в сценарии оболочки, но я нашел самый простой способ сделать это, просматривая веб-приложения в интерактивном режиме, - это открыть их в emacs; Режим архива понимает jars, и нужно просто рассказать о .wars, добавив (add-to-list 'auto-mode-alist '("\\.war\\'" . archive-mode)) к вашему .emacs. Тогда вы можете открыть войну, как обычный каталог, и все, что угодно, кроме этого:

Screenshot of archive mode with open .war

0 голосов
/ 30 июля 2011

Вы можете сделать это с помощью короткого сценария.

TEMPDIR=`mktemp -d`
REALPATH=`pwd`/$1
(cd $TEMPDIR && jar xf $REALPATH)
for j in `find $TEMPDIR -name "*.jar"`; do echo `basename $j`; jar tvf $j; done
rm -rf $TEMPDIR

EG

$ ./go.sh x.war
z.jar
     0 Sat Jul 30 21:53:20 EST 2011 META-INF/
    71 Sat Jul 30 21:53:20 EST 2011 META-INF/MANIFEST.MF
   182 Sat Jul 30 21:52:54 EST 2011 go.sh
    25 Sat Jul 30 21:50:46 EST 2011 zz.sh
x.jar
     0 Sat Jul 30 21:33:28 EST 2011 META-INF/
    71 Sat Jul 30 21:33:28 EST 2011 META-INF/MANIFEST.MF
     0 Sat Jul 30 21:33:20 EST 2011 x
...