2011-09-11 3 views
1

GUI가없는 java 명령 줄 프로젝트를 만들고 있습니다. 이 프로젝트는 Spring, Logback, Commons CLI 등 많은 오픈 소스 프로젝트를 사용합니다. 패키징에 대해 생각하기 시작했을 때, lib 파서와 함께 jar 파일로 압축 될 수있는 zip 파일로 생성 될 것이라고 생각했습니다. 디렉토리 및 lib에있는 종속 jar.명령 줄 Java 프로젝트를 패키지하는 가장 좋은 방법

adapter.jar 
/lib/dependencyA.jar 
/lib/dependencyB.jar 
etc. 

나는 메이븐 총회와 함께 연주했지만, 여전히 위와 같이 나오는 아니에요, 나는 위의 구조를 생성 할 예제를 발견하지 않았습니다. 그렇게 할 수 있습니까? 또한 다중 모듈 구조를 사용하면 어셈블리 모듈이 코어 모듈을 종속성으로 찾을 수 없기 때문에 해결할 수 없었던 복잡성이 추가됩니다. 이것이 첫 번째 Maven 프로젝트이므로 Maven이 작동하는 방식을 여전히 학습하고 있습니다. 나는 소나타 형식의 책을 훑어 보았지만 Best Practices 섹션을 사용해도 빠진 의존성을 해결할 수 없었기 때문에 무언가를 놓쳤다. 필자가 보았던 예제는 일반적으로 음영 프로젝트를 사용하는 uber 실행 가능한 jar로 병합하는 작업을 포함합니다. 제 질문은 Spring과 같은 타사 라이브러리를 포함하는 uber jar를하는 것입니다. 또는 원래의 zip/lib 하위 디렉토리 계획을 인내해야합니까?

답변

2

어셈블리 모듈을 패키지하려는 모듈에 의존시킨 다음 < moduleSets> 태그의 < dependencySets> 태그를 사용하여 원하는 레이아웃에 포함하십시오. 종속성이없는 다른 파일이 있으면 배치 모듈 자체에 배치 할 수 있습니다.

어셈블리 설명자 문서를 잘 읽으십시오. 압축, 압축 해제, 포함/제외 및 어셈블리의 파일에 대한 사용 권한을 설정할 수 있습니다. http://www.sonatype.com/books/mvnref-book/reference/assemblies-sect-best-practices.html

편집 :

당신이 받는다는에 sonatype 책을 보지 못한 경우

, 여기에 관련 장입니다 탈출 <의 당신은 당신의 조립 기술자의 구체적 필요

+0

답장을 보내 주셔서 감사합니다. 나는 그것에 대해 더 많은 연구를하고 문제를 해결했지만, 이것이 올바른 접근 방법인지에 관해서는 여전히 현명하지 않다. 내 원래의 질문은 uber - jar와 함께 할 것인지 또는 lib 계획으로 계속할 것인지 여부입니다. 전략에 대한 조언이나 참고 자료가 있습니까? –

+0

답장을하기 시작했지만 그 다음에 내가 더 많이 말하고 있다는 것을 알았습니다. 그래서 대답에 대한 주관적이었습니다. 그래서 블로그 항목을 대신 작성했습니다. 보세요. 당신의 생각을 알려주세요. http://foobarbazqux.blogspot.com/2011/09/common-scenarios-for-java-application.html – ddimitrov

+0

예, 블로그 항목은 매우 유용하며 몇 가지 사항을 제기했습니다. 고려하지 않았다 - 고마워! –

1

. 주 jar 만 포함하고 맨 위로 전달하는 하나의 dependencySet을 사용하고 주 Jar 만 제외하고 lib 디렉토리로 전달합니다.

+0

고마워. 결국 결국 나는 두 가지 의존성 설정 아이디어를 얻었다. 아직이 상황에 대한 최선의 접근 방법이라면 현명하지 못한 사람이 있습니다 :) –

관련 문제