War (1)

리눅스 환경에 배포한 WAR 또는 JAR 파일에 새로운 파일을 추가하거나 기존 파일을 업데이트하는 방법


안녕하세요, 케이치입니다. 


오늘은 리눅스 환경에 배포한 WAR 또는 JAR 파일에 새로운 파일을 추가하거나 기존 파일을 업데이트하는 방법을 알려드리겠습니다. 그닥 이렇게 할 일이 없다보니 할 때마다 계속 까먹어서 그냥 혼자 끄적일겸 적어봅니다.


우선 /mydir/myapp.war 파일이 있다고 가정합니다.


우선 이 파일안에 어떤 파일이 있는지부터 확인해보죠.


$ cd /mydir

$ ll    (또는 ls -l)

-rw-rw-r--. 1 keichee keichee 63378 Nov  6 11:37 myapp.war


$ unzip -l myapp.war


Archive:  myapp.war

  Length      Date    Time    Name

---------  ----------   -----    ----

        0  11-06-2017 11:28   META-INF/

     128  11-06-2017 11:28   META-INF/MANIFEST.MF

        0  11-06-2017 11:28   css/

        0  11-06-2017 11:28   images/

        0  11-06-2017 11:28   WEB-INF/

        0  11-06-2017 11:28   WEB-INF/classes/

        0  11-06-2017 11:28   WEB-INF/classes/com/

        0  11-06-2017 11:28   WEB-INF/classes/com/my/

.
.....중략.....
.
  85308  08-14-2017 17:37   WEB-INF/lib/spring-oxm-4.3.0.RELEASE.jar
 587278  08-14-2017 17:37   WEB-INF/lib/spring-test-4.3.0.RELEASE.jar
 266993  08-14-2017 17:37   WEB-INF/lib/spring-tx-4.3.0.RELEASE.jar
 808847  08-14-2017 17:37   WEB-INF/lib/spring-web-4.3.0.RELEASE.jar
 905320  08-14-2017 17:37   WEB-INF/lib/spring-webmvc-4.3.0.RELEASE.jar
---------                           -------
 44109477                        393 files

WAR파일안에 어떤 파일들이 들어가있는지 디렉토리 경로까지 전부 확인할 수 있습니다.


이제 파일 하나를 추출해보도록 하죠.


추출할 대상은 /META-INF/MANIFEST.MF 입니다. 사이즈가 128이군요.


$ unzip myapp.war META-INF/MANIFEST.MF

Archive:  myapp.war

  inflating: META-INF/MANIFEST.MF

$ ll   (또는 ls -l )

-rw-rw-r--. 1 keichee keichee 44109477 Nov  6 11:37 myapp.war

drwxrwxr-x. 3 keichee keichee       17 Nov  9 14:42 META-INF

META-INF 디렉토리가 생성된 것을 확인할 수 있습니다.


$ cd META-INF

$ ls -l

-rw-rw-r--. 1 keichee keichee 128 Nov  6 11:28 MANIFEST.MF


파일이 있는 것을 확인할 수 있습니다. 사이즈가 128로 위에서 조회한 것과 동일하네요.


그럼 파일을 수정해볼까요?


$ vi MANIFEST.MF


마음대로 내용을 수정해서 파일 사이즈가 달라지도록 해주세요.


$ ls -l

-rw-rw-r--. 1 keichee keichee 145 Nov  9 13:38 MANIFEST.MF


파일의 사이즈와 시간이 변경되었네요. 128 -> 145


그럼 이 파일을 이제 다시 WAR 파일안으로 업데이트해서 넣어보도록 하겠습니다.


$ jar uvf myapp.war META-INF/MANIFEST.MF

adding: META-INF/MANIFEST.MF(in = 145) (out= 120)(deflated 17%)


파일을 추가한다고 나오면서 압축이 얼마나 됐는지가 나오네요. 17%가 압축됐습니다. 참고로 여기서 in은 실제 파일 사이즈out은 압축된 파일사이즈 입니다.


만약 jar 명령어가 없을 경우에는 zip 명령어를 사용할 수도 있습니다.

$ zip -r myapp.war META-INF/MANIFEST.MF

adding: META-INF/MANIFEST.MF(in = 145) (out= 120)(deflated 17%)



이제 다시 myapp.war 파일에 어떤 파일들이 있는지 조회해보도록 하겠습니다.


$ unzip -l myapp.war


Archive:  myapp.war

  Length      Date    Time    Name

---------  ----------   -----    ----

        0  11-06-2017 11:28   META-INF/

     145  11-09-2017 13:38   META-INF/MANIFEST.MF

        0  11-06-2017 11:28   css/

        0  11-06-2017 11:28   images/

        0  11-06-2017 11:28   WEB-INF/

        0  11-06-2017 11:28   WEB-INF/classes/

        0  11-06-2017 11:28   WEB-INF/classes/com/

        0  11-06-2017 11:28   WEB-INF/classes/com/my/

.
.....중략.....
.
  85308  08-14-2017 17:37   WEB-INF/lib/spring-oxm-4.3.0.RELEASE.jar
 587278  08-14-2017 17:37   WEB-INF/lib/spring-test-4.3.0.RELEASE.jar
 266993  08-14-2017 17:37   WEB-INF/lib/spring-tx-4.3.0.RELEASE.jar
 808847  08-14-2017 17:37   WEB-INF/lib/spring-web-4.3.0.RELEASE.jar
 905320  08-14-2017 17:37   WEB-INF/lib/spring-webmvc-4.3.0.RELEASE.jar
---------                           -------
 44109494                        393 files


파일 사이즈와 날짜가 변경이 되었네요.

참고로 여기에 조회되는 파일사이즈는 압축되기 전의 파일 사이즈입니다.