안녕하세요, 케이치입니다.
오늘은 리눅스 환경에 배포한 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/
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/
파일 사이즈와 날짜가 변경이 되었네요.
참고로 여기에 조회되는 파일사이즈는 압축되기 전의 파일 사이즈입니다.
vi 에서 문자열 치환하기 (0) | 2018.01.23 |
---|---|
리눅스 서버 재부팅/재기동 시간 확인하기 (0) | 2017.11.10 |
리눅스에서 명령어 히스토리 조회 할 때 날짜 및 시간 함께 표시하기 (0) | 2017.11.02 |
[리눅스] find 와 wc를 이용한 하위 디렉토리 모든 파일 갯수 구하기 (0) | 2015.10.14 |
[리눅스] 정규표현식을 이용한 파일 삭제 (0) | 2015.10.14 |
오류 메시지 : 새로운 apk의 버전 코드(1)가 이미 존재합니다.
해결방법 :
AndroidManifest.xml 파일에서
android:versionCode=""
android:versionName=""
를 찾을 수 있다면 해당 값을 변경해주시면 됩니다.
참고로 버전 코드는 몇 번째 업데이트인지를 표시해주시면되고 버전 네임에는 실제 사용자들에게 보여지는 버전입니다.
구글링 하면 대부분 위와같은 방법으로 해결하신 것 같은데 아마도 이클립스에서 안드로이드 개발 하시던 분들이 올린 글인것 같습니다.
저같은 경우는 안드로이드 스튜디오로 개발을 하고있는데 특별히 세팅을 바꾼게 없는데 manifest파일에 위와같은 설정이 없길래 그냥 수동으로 추가해보려했더니 warning이 떴는데 그래들 빌드에서 값을 오버라이드 하고 있다고 나오더군요.
만약 manifest파일에 저런 설정이 없다면 안드로이드 스튜디오 좌측 패키지 익스플로러 창에서 트리 표시 방법을 Android로 선택을 해주시면 build.gradle ( Module:app )을 열어보시면 versionCode와 versionName 설정하는 곳이 보이실 겁니다.
아래 사진을 참고하세요.
그럼 즐프하세요~ ^-^
libGdx 프로젝트 생성 직후 데스크탑으로 테스팅 할 때 오류 해결방법 (0) | 2015.07.27 |
---|---|
libGDX 를 이용한 게임 개발 정리 1 - 그래픽 출력하기 (0) | 2015.07.27 |
안드로이드 스튜디오 + libGDX 연동하여 설치하기 (0) | 2015.07.25 |
안드로이드 스튜디오 단축키 모음집 ( 윈도우, 맥 ) (0) | 2015.06.16 |
안드로이드 스튜디오 단축키 (0) | 2015.05.05 |