반응형

JAR의 Manifest file 활용

 

Manifest 파일 활용 : 기초

  • JAR 파일은 내부의 manifest 파일을 활용하여 다양한 기능을 지원  (ex. 전자서명, 버전관리, 패키징 등)
  • manifest 파일은 JAR 파일에 패키징된 파일들에 대한 정보를 가지고 있는 특별한 파일
  • manifest 가 가지고 있는 "meta" 정보를 제단하여 JAR 파일을 여러 목적으로 사용 가능

 

기본 manifest 이해 (Understanding the Default Manifest)

(참조 - Understanding the Default Manifest - Oracle docs)

  • JAR 파일 생성시 자동으로 manifest 파일 생성
  • 항상 META-INF/MANIFEST.MF 경로에 하나의 manifest 파일이 존재
  • 기본 manifest 파일은 Manifest 버전(Manifest-version), 작성자(Created-By) 항목 내용으로 구성
  • "header: value"
  • manifest 파일 정보는 JAR 파일 활용 의도에 따라 항목 추가 가능

 

테스트

HelloWorld > JAR 파일 생성 > MANIFEST.MF 파일 확인 (Java Decompiler)

 

[ Hello.java ]

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello World Application!!");
    }
}

 

 

JAR 파일 생성 

Hello.java 컴파일 > 컴파일한 Hello.class를 HelloApp.jar JAR 파일로 생성

 

javac Hello.java
 
jar cvf HelloApp.jar Hello.class

 

 

[ META-INF/MANIFEST.MF ]

Manifest-Version: 1.0
Created-By: 1.8.0_292 (AdoptOpenJDK)
 

 

 

 

Manifest 파일 수정 (Modifying a Manifest File)

(참조 - Modifying a Manifest File - Oracle docs)

        • jar cvmf <MANIFEST.MF> <jar-file> <input-file(s)>
          • c: JAR 파일 생성
          • m: 텍스트 파일의 정보를 JAR 파일의 manifest 파일에 추가
          • f: 결과값(output)이 특정 JAR 파일에 가도록 설정
          • <manifest-addition>: manifest에 추가할 항목을 가지고 있는 파일
          • <input-file(s)>: JAR 파일에 들어갈 파일(들) - 띄어쓰기로 구분
          • <jar-file>: JAR 파일의 이름
        • manifest 파일의 항목은 UTF-8 인코딩 되어야 한다.

 

[ MANIFEST.MF ] 추가/변경 항목

Created-By: developer
 

 

jar cvmf MANIFEST.MF HelloApp.jar Hello.jar

 

 

HelloApp.jar 압축해제 > META-INF > MANIFEST.MF 확인

 

tar -xvf HelloApp.jar
 
cd META-INF
 
cat MANIFEST.MF

 

 

 


참조

Manifest file - Oracle docs

Manifest file - Wikipedia

Metadata - Wikipedia

 

반응형