2017-10-10 11 views
3

내가 가지고있는 initial question에서 이것을 분리한다. 충분히 일반적인 것으로 가정한다. 다중 릴리스 항아리 인 경우 이슈 체크를 사용하기 전에 어떻게 할 수 있습니까? 항아리가 멀티 릴리스인지 확인하는 방법

Multi-Release: true 

나는 그것의 가능한 위의 속성에 대한 병의 META-INFMANIFEST.MF에 직접보고 알고 있지만, 명령 줄 옵션이 사용할 수 있습니까?

어쩌면 나는 이미 다른 이름으로 된 것이 있거나 아주 명백한 것에 눈을 멀게하고 있습니다. 하지만 jarjava 도구에서 이러한 옵션을 찾아 보았습니다.

+0

JAR 매니페스트를 들여다 볼 방법을 찾았을 때 해결책이 없습니다. 나는 [압축을 푸는] 방법이 없다고 생각합니다 (https://stackoverflow.com/a/46662468/2525313). – Nicolai

+3

Nicolai가 정확하다.'jar' 도구는 JAR 파일이 MR JAR인지 빠르게 확인하는 옵션을 제공하지 않는다. 가장 간단한 방법은'jar --file = --list'를 사용하고 목록에서 META-INF/versions을 찾는다. 예, 누군가가 매니페스트에 다중 출시 특성이없는 버전 섹션을 추가하는 경우가 있습니다. –

답변

4

jar는 생성 및 업데이트 중에 매니페스트 파일에 대한 특수 작업 만 지원합니다. 이하실 수도 있습니다 :

부울 isMultiRelease() : 그 외에는

unzip -p file.jar META-INF/MANIFEST.MF | grep "Multi-Release: true" 

, JarFile를 유용 할 수있는 다음과 같은 새로운 방법은, true를 돌려줍니다를이 JAR 파일은 멀티 해제 JAR 인 경우 파일.

+3

아마도이 기능은 Linux에서만 작동한다는 것을 추가해야합니다. :) – Nicolai

+0

정확히 내가 무엇을 찾고 있을지 모르겠다. 비슷하게 보았을 때 나는 항아리 내용을 가로 지르는 것을 알고 있다는 점을 언급해야만했다. 또한 @Nicolai가 언급했듯이 이것은 JDK 자체가 아닌 다른 도구에 의존적 일 수 있습니다. – nullpointer

+1

나는 그것이 이상적인 해결책이 아니라는 것을 깨닫지 만, 몇몇 시나리오에서는 작동 할 것이다. 불행히도 jar 파일을 표준 출력으로 추출 할 수 없다고 생각합니다. – neuhaus