2012-04-30 2 views
4

jar 파일 크기를 줄일 수있는 방법이 있습니까?jar 파일 크기 줄이기

사용하지 않는 종속성을 줄이는 도구가 필요합니다.

종속성 관리를 위해 maven을 사용합니다.

도움이 될 것입니다.

+0

"사용하지 않는 종속성"이란 무엇을 의미합니까? 너의 자신의 pom 's 또는 다른 사람의 pom 안에? – khmarbaise

+0

내 자신의 pom에 나는 약 350kb.in 그것의 pom 파일에 아파치의 httpclient가 포함되어 있습니다. 그것은 다른 files.i와 종속성을 가지고 있습니다. jar에서 사용하지 않는 클래스를 줄이고 jar 파일을 줄이는 도구가 필요합니다. –

+0

httpclient에 사용되지 않는 종속성이 포함되어있는 경우에는 전이 의존성을 제외하기 위해 제외를 사용할 수 있습니다. – khmarbaise

답변

5

JAR 파일에는 일반적으로 Maven 의미의 종속성이 없습니다. 그래서 당신에 대해 이야기해야합니다

  • 을 WAR 또는 EAR 또는 유사한 파일,
  • JAR 파일을 많이 결합하여 생산 된 소위 UberJAR 파일; 예 : Maven shade plugin을 사용하거나
  • 종속성을 Maven 모듈보다 세밀하게 조정할 수 있습니다.

첫 번째 두 경우에는 종속성 사양 또는 전쟁 또는 음영 플러그인 빌드 설명자에서 제외하여 명목상 종속 JAR을 제외 할 수 있습니다. IIRC, 음영 플러그인을 사용하여 특정 패키지 및 클래스를 제외 할 수도 있습니다.

마지막으로 JAR 파일을 후 처리하려면 별도의 도구가 필요할 수 있습니다. 사용되지 않는 클래스를 제거하는 것은 난독 화가가 할 수있는 일입니다. 그러나 반사적으로 사용되는 클래스 나 클래스 이름을 제거하지 않도록주의해야합니다. 예 : DI/IoC 프레임 워크 또는 AOP 프레임 워크에 의해 생성됩니다.

(일반적으로 이런 종류의 도구는 .class 파일 외부 참조가 내포하는 종속성을 분석하여 어떤 클래스가 사용되는지 파악하려고 시도합니다 .DI/IoC/AOP 등에서는 다른 종류의 종속성을 소개합니다. .class 파일 구조.)

1

pack200은 JAR 크기를 크게 줄일 수 있습니다. 그러나 Maven과 함께 사용하는 것은 어렵고 EE 컨테이너와 함께 사용하는 것은 불가능합니다.

왜 사용하지 않는 종속성이 있습니까?

+1

다른 항아리와의 종속성이있는 jar 파일이 있습니다. 해당 항아리에서 1-2 클래스 만 사용하고 사용하지 않는 항아리를 줄이려고합니다. –

3

프로젝트가 사용하는 종속성을 알고 싶으면 maven-dependency-plugin을 확인하십시오.이 값을 사용/사용되지 않는 종속성을 분석하는 데 사용할 수 있습니다.

를 통해 의존성을 확인합니다

mvn dependency:analyze 

또는이 같은 출발 트리에서 살펴 :

mvn dependency:tree 

또는 당신은 (당신이 사용하는 하나 따라) 당신의 IDE에 좀 걸릴 수 있습니다 예를 들어 이클립스 (Indigo)와 m2e 플러그인에는 의존성 트리를 보여주는 "Dependency Hierarchy"탭이있다. 전이 의존성.

일부 상황에서는 maven-dependency-plugin이나 ide 플러그인으로 분석 할 수없는 DI 프레임 워크에서 사용하는 종속성에주의해야합니다.