2013-04-23 5 views
3

일부 허가 라이센스하에 작성한 Java 패키지를 배포하고 싶습니다.의존성이있는 오픈 소스 jar를 배포하는 방법은 무엇입니까?

그 결과 speedytools-0.1.jar에는 Apache Commons 및 Guava와 같은 몇 가지 일반적인 Java 종속성이 있습니다.

이 jar를 배포하는 가장 자바 방식은 무엇입니까? 배포 된 zip 파일에 종속성을 포함시켜야합니까?

+1

병을 메이븐으로 포장하고 있습니까? – Magnilex

답변

6

jar에 의존성을 포함하지 마십시오. 그것들을 maven 종속물로 선언하십시오.

이 몇 가지 장점을 제공합니다 :

  • 사용자가 어떤 역 호환 버전의 독립 구아바와 함께 라이브러리를 사용할 수 있습니다.

  • 사용자가 라이브러리의 일부를 사용하는 경우 해당 라이브러리에서 Guaya transitive 종속성을 제외하여 종속성 수를 줄일 수 있습니다. 은 구아바에 의존하지 않습니다.

2

jarjar : "2004 년부터 자바 라이브러리 임베딩"

  • 다른 라이브러리의 종속성과 충돌 할 수있는 종속성의 특정 버전에 따라 라이브러리에 대해 걱정할 필요가 없습니다.

  • 향후 릴리스에서 종속성을 추가하면 라이브러리를 자유롭게 변경할 수 있습니다. 사용자는 빌드 스크립트를 재구성 할 필요가 없습니다.

  • 필요에 따라 라이브러리를 패치 할 수 있습니다. 일반적인 Java 종속성 중 하나의 특수 빌드를 원한다면 해킹을 제거하십시오. 빌드가 공용 버전과 호환 될 필요조차 없습니다.

  • 패키지를 다운로드하고 구현하는 전체 프로세스가 매우 간단합니다. 이것이 유익한 (또는 바람직 함) 정도는 패키지가 무엇인지, 무엇을하는지, 그리고 누구에게 해당 패키지를 원하는지에 따라 다릅니다. 분명히, 나는 상상할 수있는 대부분의 유즈 케이스에서 maven 솔루션을 선호한다. 그러나 nonthess, 나는 jarjar가 확실히 이것과 같이 끝이없는 질문을 던져 놓았다고 생각한다. 이상적입니다.

ps 많은 질문을 기다리면서 다른 답변을 기대합니다.

+0

jarjar가 좋지만 외부 종속성을 포함해야하는 것은 아닙니다. – Magnilex

+0

@MagnusTengdahl : 지금 내 말을들을 수 있습니까? :) – drewmoore

+0

예! :) 나는 (항아리의 목적에 따라) 다른 대답에서 여전히 maven 방식을 선호하지만. – Magnilex

관련 문제