Bash를 사용하여 JAR에서 MANIFEST.MF 파일을 읽는 방법
bash를 사용하여 "some.jar"에서 MANIFEST.MF maven 매니페스트 파일을 읽어야합니다.
$ unzip -q -c myarchive.jar META-INF/MANIFEST.MF
-q
압축 해제 프로그램에서 자세한 출력을 억제합니다.-c
stdout으로 추출합니다.
예:
$ unzip -q -c commons-lang-2.4.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_13-119 (Apple Inc.)
Package: org.apache.commons.lang
Extension-Name: commons-lang
Specification-Version: 2.4
Specification-Vendor: Apache Software Foundation
Specification-Title: Commons Lang
Implementation-Version: 2.4
Implementation-Vendor: Apache Software Foundation
Implementation-Title: Commons Lang
Implementation-Vendor-Id: org.apache
X-Compile-Source-JDK: 1.3
X-Compile-Target-JDK: 1.2
또는 -p
대신 사용할 수 있습니다 -q -c
.
-p 파일을 파이프로 추출합니다 (stdout). 파일 데이터 만 stdout으로 전송되고 파일은 저장된 것처럼 항상 이진 형식으로 추출됩니다 (변환 없음).
사용 unzip
:
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF
그것은 조용히 ( -q
) jar 파일 (zip 형식을 사용하여 압축 된)에서 stdout ( -c
) 으로 META-INF / MANIFEST.MF 경로를 읽습니다 . 그런 다음 출력을 다른 명령으로 파이프하여 '이 jar의 기본 클래스는 무엇입니까?'와 같은 질문에 답할 수 있습니다.
$ unzip -q -c $JARFILE_PATH META-INF/MANIFEST.MF | grep 'Main-Class' | cut -d ':' -f 2
(이것은 문자열을 포함하지 않는 모든 줄을 제거한 Main-Class
다음 :
두 번째 필드 인 클래스 이름 만 유지하면서 줄을에서 분할합니다 ). 물론 $JARFILE_PATH
적절하게 정의 하거나 $JARFILE_PATH
관심있는 jar 파일의 경로로 바꾸십시오 .
배포에 따라 unzip
패키지를 설치하십시오 . 그런 다음 간단히
unzip -p YOUR_FILE.jar META-INF/MANIFEST.MF
그러면 내용이 STDOUT에 덤프됩니다.
HTH
다른 사람들은 unzip -p 및 piping을 grep 또는 awk에 사용하는 것에 대해 게시했습니다. 대부분의 경우 작동하지만 MANIFEST.MF의 줄당 72 자 제한으로 인해 값이 여러 줄로 분할되어 구문 분석이 매우 어려운 키를 찾을 수 있습니다. 실제로 파일에서 렌더링 된 값을 가져올 수있는 CLI 도구를보고 싶습니다.
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
$ tar xfO some.jar META-INF/MANIFEST.MF
x
추출하고 O
stdout으로 리디렉션합니다.
참고 : GNU tar가 아닌 bsdtar에서만 작동하는 것 같습니다.
참고 URL : https://stackoverflow.com/questions/7066063/how-to-read-manifest-mf-file-from-jar-using-bash
'IT박스' 카테고리의 다른 글
Clojure 함수가 가변 개수의 매개 변수를 사용하도록 만드는 방법은 무엇입니까? (0) | 2020.10.14 |
---|---|
@Override와 같은 주석은 Java에서 내부적으로 어떻게 작동합니까? (0) | 2020.10.14 |
SQL은 동일한 테이블에있는 다른 열의 값과 동일한 한 열의 값을 설정합니다. (0) | 2020.10.14 |
UIView 외부에 테두리 추가 (내부 대신) (0) | 2020.10.14 |
AngularJS에서 $ log.debug를 켜고 끄는 방법 (0) | 2020.10.14 |