클래스 파일을 Jar파일로 압축하기
공통으로 사용하는 라이브러리가 다른 독립적인 프로젝트로 생성되어 있다면, 공통 라이브러리는 jar파일로 압축하여 이를 사용하는 프로젝트에 배포(복사)되게 될 것이다.
여기서는 Jar파일로 압축하는 방법과 매번 컴파일하고 복사해서 해당 프로젝트에 붙여 넣기하기는 힘들기에 간단한 배치 프로그램을 만들어 컴파일하고, 필요로 하는 프로젝트 경로에 복사하는 batch 파일을 하나 만들어 보겠다.
jar 사용법
C:\>jar -ufv0 BCWAF_2.0.jar com
▣ 명령어 형식:
jar {ctxu}[vfm0M] [jar-file] [manifest-file] [-C dir] files ...
▣ 필수옵션:
c(Create) : 새로운 JAR 파일을 생성하기 위해 사용한다.
t(Table) : JAR 파일의 목록을 나열하기 위해 사용한다.
u(Update) : 기존의 JAR 파일을 수정하기 위해 사용한다.
x(eXtract) : JAR 파일로부터 파일을 추출할 때 사용한다.
▣ 필요에 따라 부여하는 옵션
v : 압축률 및 생성일시 등의 자세한 정보를 보여준다.
f : jar 파일의 이름을 지정할 경우에 사용한다.
m : 지정된 manifest 파일로부터 menifest 정보를 JAR 파일 내에 포함시켜 준다.
0 : zip 형식의 압축을 하지 않고, 단지 파일을하나로 묶어주기만 한다.
M : menifest 파일을 생성하지 않는다.
-C : 지정된 디렉토리의 파일들을 포함시킨다.
이제 현재 디렉토리에 클래스 파일과 gif 파일들과 au 파일들이 있다고 가정하고, 이 파일들을 MyArchive.jar 이라는 파일로 묶어 보죠. 다음과 같이 하면 됩니다.
jar cvf MyArchive.jar *.class *.gif *.au
v : 압축률 및 생성일시 등의 자세한 정보를 보여준다.
f : jar 파일의 이름을 지정할 경우에 사용한다.
m : 지정된 manifest 파일로부터 menifest 정보를 JAR 파일 내에 포함시켜 준다.
0 : zip 형식의 압축을 하지 않고, 단지 파일을하나로 묶어주기만 한다.
M : menifest 파일을 생성하지 않는다.
-C : 지정된 디렉토리의 파일들을 포함시킨다.
이제 현재 디렉토리에 클래스 파일과 gif 파일들과 au 파일들이 있다고 가정하고, 이 파일들을 MyArchive.jar 이라는 파일로 묶어 보죠. 다음과 같이 하면 됩니다.
jar cvf MyArchive.jar *.class *.gif *.au
#####################################
# JAR 사용법 #
#####################################
jar 에서 v 옵션을 추가하면 자세한 정보를 볼 수 있다.
1-1. JAR archive 생성하는 방법
jar cf archive.jar file1 file2 ...
1-2. 디렉토리 이동후 압축하기
(현재 폴더의 모든 class 와 resources 폴더에 있는 모든 파일을 압축한다.)
(*.class, resources/*)
(현재 폴더의 모든 class 와 resources 폴더에 있는 모든 파일을 압축한다.)
(*.class, resources/*)
jar cf app.jar *.class -C resources\ .
2. 내용을 들여다보는 방법
jar tf archive.jar
3. jar 압축을 푸는 방법
jar xvf archive.jar [file1 file2 ...]
#################################
# 특정 파일만 Update 하기
#################################
com 을 OpenLbsp.jar 로 생성하고, modb4.properties 파일만 변경한다.
## Jar 생성하기
jar -cvf OpenLbsp.jar d:/abc/de/*.class
## 특정 파일만 Update 하기
jar -uvf OpenLbsp.jar com/openlbs/datamanager/modb4.properties
옵션:
-c 새 아카이브를 만듭니다.
-t 아카이브에 대한 목차를 나열합니다.
-x 아카이브에서 명명된 (또는 모든) 파일을 추출합니다.
-u 기존의 아카이브를 업데이트합니다.
-v 표준 출력에 대한 자세한 정보 출력을 생성합니다.
-f 아카이브 파일 이름을 지정합니다.
-m 지정된 증명 파일에서 증명 정보를 포함시킵니다.
-0 저장만 수행하며 ZIP 압축을 사용하지 않습니다.
-M 입력 항목에 대한 증명 파일을 만들지 않습니다.
-i 지정된 jar 파일에 대한 색인 정보를 생성합니다.
-C 지정된 디렉토리로 변경하고 다음 파일을 포함시킵니다.
디렉토리인 파일이 하나라도 있으면 재귀적으로 처리됩니다.
'm' 및 'f' 플래그가 지정된 순서대로 증명 파일 이름과 아카이브 파일
이름을 지정해야 합니다.
jar -uvf OpenLbsp.jar com/openlbs/datamanager/modb4.properties
사용법: jar {ctxu}[vfm0M] [jar-file] [manifest-file] [-C dir] files ...
옵션:
-c 새 아카이브를 만듭니다.
-t 아카이브에 대한 목차를 나열합니다.
-x 아카이브에서 명명된 (또는 모든) 파일을 추출합니다.
-u 기존의 아카이브를 업데이트합니다.
-v 표준 출력에 대한 자세한 정보 출력을 생성합니다.
-f 아카이브 파일 이름을 지정합니다.
-m 지정된 증명 파일에서 증명 정보를 포함시킵니다.
-0 저장만 수행하며 ZIP 압축을 사용하지 않습니다.
-M 입력 항목에 대한 증명 파일을 만들지 않습니다.
-i 지정된 jar 파일에 대한 색인 정보를 생성합니다.
-C 지정된 디렉토리로 변경하고 다음 파일을 포함시킵니다.
디렉토리인 파일이 하나라도 있으면 재귀적으로 처리됩니다.
'm' 및 'f' 플래그가 지정된 순서대로 증명 파일 이름과 아카이브 파일
이름을 지정해야 합니다.
예 1: classes.jar라는 아카이브 파일에 두 클래스 파일을 아카이브하려면 :
jar cvf classes.jar Foo.class Bar.class
예 2: 기존의 증명 파일 'mymanifest'를 사용하고 foo/ 디렉토리에 있는
모든 파일을 'classes.jar'로 아카이브합니다:
jar cvfm classes.jar mymanifest -C foo/ .
jar cvf classes.jar Foo.class Bar.class
예 2: 기존의 증명 파일 'mymanifest'를 사용하고 foo/ 디렉토리에 있는
모든 파일을 'classes.jar'로 아카이브합니다:
jar cvfm classes.jar mymanifest -C foo/ .
다음 예제를 보시면 이해가 쉽습니다.
대부분 이정도를 많이 사용합니다.
1. 압축할때
jar cvf create.jar a.class b.class cDirectory
a.class,b.class,cDirectory를 create.jar라는 이름으로 생성합니다.
2. 압축풀때
jar xvf create.jar
create.jar의 내용을 추출합니다.
3. 압축된내용보기
jar tvf create.jar
create.jar의 내용을 봅니다.
'Java' 카테고리의 다른 글
HTML 파서기 JSoup (0) | 2016.09.01 |
---|---|
String[]을 List , List를 String[] 배열로 변환 (0) | 2016.08.17 |
log4j.xml 한글 설정 (0) | 2016.03.23 |
java.sql.Date <==> java.util.Date (0) | 2016.03.19 |