동네 짱 항아리는 무엇입니까?


답변:


357

Überabove또는에 대한 독일어 단어입니다 over(실제로는 영어와 동 떨어져 있습니다 over).

따라서,이 문맥에서, uber-jar은 하나의 단일 JAR 파일에 패키지 모든 종속성을 모두 포함하는 것으로 정의 된 단순한 JAR (a) 에서 한 단계 위로 올라간 "over-jar" 입니다. 이름은 ultrageek, superman, hyperspace 및 메타 데이터와 같은 안정적인 이름에서 유래 한 것으로 생각할 수 있으며, "일반을 넘어서"라는 의미가 모두 비슷합니다.

장점은 uber-jar에 실제로 종속성 없기 때문에 uber-jar을 배포하고 대상에 종속성이 설치되어 있는지 여부를 전혀 신경 쓰지 않아도된다는 것 입니다.

uber-jar 내에서 자신의 물건의 모든 종속성 해당 uber-jar 내에 있습니다. 이러한 종속성의 모든 종속성과 마찬가지로. 등등.


(가) 아마 의 JAR 자바 개발자에게 무엇인지 설명해야하지만 완전성을 위해 포함됩니다. Java 아카이브이며 기본적으로 관련 메타 데이터 및 리소스와 함께 여러 Java 클래스 파일을 포함하는 단일 파일입니다.


이상한 ... 나는 독일인이고 물론 "über"라는 단어와 그 의미를 알고 있습니다. 그러나 왜 Maven 컨텍스트에서 여기에 사용됩니까? 이 경우 하나 이상의 사물이 함께 모이고 생성 된 jar을 통해 액세스 가능하다는 것을 의미합니다. 불행히도이 힌트는 내 maven 문제를 해결하지 못했습니다. ;-)
Bjoern

7
BTW, überover이러한 단어 쌍에서 관찰 할 수있다 오래된 게르만의 체계적인 보컬 변화의 결과이다 : geben/give, leben/live, haben/have, heben/heave그리고 더 많은.
biziclop

매우 현명한 설명 : 예시 링크
Veniamin

사람들 을 교육 하려고 애쓰는 것에 대해 얼마나 많은 슬픔을 느끼면서 , 나는 계속 불평하는 것들을 제거하기로 결정했습니다. 나는 여전히 독일어의 맥락에서 우버를 정의하지만 (약간 자세한) 역사 수업은 이제 사라졌습니다 :-)
paxdiablo

58

ubar jar 는 또한 지방 jar종속성이있는 jar 로도 알려져 있습니다.
동네 짱 항아리를 구성하는 일반적인 세 ​​가지 방법이 있습니다.

  1. 음영 처리되지 않은 : 모든 JAR 파일의 압축을 풀고 단일 JAR로 다시 포장하십시오. Java의 기본 클래스 로더와 함께 작동합니다. maven-assembly-plugin 도구
  2. 음영 처리 : 음영 처리 되지 않은 것과 동일하지만 모든 종속성의 모든 패키지 이름을 바꿉니다 (예 : "음영") . Java의 기본 클래스 로더와 함께 작동합니다. 일부 (전부는 아님) 종속성 버전 충돌을 방지합니다. 도구 Maven-Shade-plugin
  3. JAR의 JAR : 최종 JAR 파일에는 다른 JAR 파일이 포함되어 있습니다. 종속성 버전 충돌을 피하십시오. 모든 리소스 파일이 유지됩니다. 도구 : Eclipse JAR 파일 내보내기

이상


57

Paxdiablo 정의는 정말 좋습니다.

또한, 실제로 소프트웨어를 배포하고 고객이 직접 종속성을 다운로드하지 않도록하려면 uber-jar를 제공하는 것이 매우 흥미 롭습니다. 단점으로, 자체 정책으로 일부 라이브러리의 사용을 허용하지 않거나 일부 추가 구성 요소 (slf4j, 시스템 호환 라이브러리, arch specialiez 라이브러리 등)를 바인딩 해야하는 경우 아마도 어려움을 겪을 것입니다 .

당신은 그것을 수행 할 수 있습니다 :

보다 확실한 해결책은 세 번째 라이브러리를 별도로 제공하는 것입니다. maven-shade-plugin에는 이에 대한 설명자가 미리 구성되어 있습니다. 이것은 더 복잡하지 않습니다 (maven 및 해당 플러그인 사용).

마지막으로 OSGI 번들을 사용하는 것이 가장 좋습니다. 좋은 튜토리얼이 많이 있습니다 :)

추가 구성에 대해서는 다음 주제를 읽으십시오.


4

자체 포함 된 실행 가능한 Java 아카이브. WildFly Swarm uberjars의 경우 애플리케이션을 포함하는 단일 .jar 파일,이를 지원하는 데 필요한 WildFly 부분, 내부 Maven 종속성 저장소 및 모든 부트 스트랩을 포함하는 shim입니다. 이것 좀 봐


0

다른 이름은 단지 Java 앱을 패키징하는 방법입니다.

스키니 – 문자 그대로 코드 편집기에 입력 한 비트 만 포함하고 다른 비트는 포함하지 않습니다.

Thin – 위의 모든 PLUS와 앱의 앱 직접 종속성 (DB 드라이버, 유틸리티 라이브러리 등)을 모두 포함합니다.

Hollow – Thin의 반대 – 앱을 실행하는 데 필요한 비트 만 포함하고 앱 자체는 포함하지 않습니다. 기본적으로 사전 패키지화 된 "앱 서버"로 나중에 기존 Java EE 앱 서버와 동일한 스타일로 앱을 배포 할 수 있지만 중요한 차이점이 있습니다.

지방 / 동네 짱은 - 비트가 말 그대로 자신을 쓰기 포함 PLUS 앱 직접 종속 PLUS "자신의"응용 프로그램을 실행하는 데 필요한 비트를.

출처 : Dzone의 기사

JAR 유형의 시각적 표현

https://stackoverflow.com/a/57592130/9470346 에서 다시 게시

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.