2013-03-21 3 views
29

여러 모듈을 사용하는 경우에도 maven 프로젝트에 대한 수년 간의 경험이 있습니다.이 덕분에 은 싫어 maven의 다중 모듈 기능 (따라서 면책 조항이 이제 완료되었습니다.)) 및 심지어 내가 정말로 maven을 원한다면 명확한 대답을 얻을 수없는 것이 있습니다 :간단한 종속성을 통한 Maven Multi Module의 이점

다중 모듈 메이븐 프로젝트의 전형적인 유즈 케이스는 무엇입니까? 그런 구조의 부가 가치는 단순 의존성 및 부모 부모와 비교되는 것은 무엇입니까?

나는 다중 모듈 프로젝트의 많은 구성을 보았지만, 그것들 모두는 자신의 삶을 결과물로 제공하는 간단한 의존성 라이브러리 구조를 생성함으로써 명확하게 해결 될 수 있었다. (심지어 부모 pom과 별도의 산출물 : depedencies 및 구성을 factorising) 나는 분명히 멀티 모듈 구조의 부가 가치를 볼 수있는 유스 케이스를 찾지 못했습니다.

나는 이런 종류의 구조가 과도한 복잡성을 가져오고 실질적인 이익을 얻지 못한다는 것을 항상 발견했다. (진정한 솔직히 말해서, ear은 이런 종류의 구조로 인해 이득을 볼 수 있지만, 다른 유용한 사용법과 이점을 제외하면 얻을 수 있습니다.)

답변

23

실제 사례입니다.

나는 다중 모듈 프로젝트를 가지고있다. (그리고 너의 호언 장담 ... 나는 그 어떤 복잡한 문제도 보지 못했다.) 최종 결과는 webapp이지만 api, impl, webapp에 대한 다른 모듈을 가지고있다.

프로젝트를 만든 후 12 개월 만에 Jar에서 실행되는 독립 실행 형 프로세스를 사용하여 Amazon S3와 통합해야한다는 것을 알게되었습니다. api/impl에 의존하는 새 모듈을 추가하고 새 모듈에 통합을위한 코드를 작성합니다. 어셈블리 플러그인 (또는 이와 비슷한 것)을 사용하여 실행 가능한 jar를 만들고 지금은 Tomcat에 배포 할 수있는 전쟁과 다른 서버에 배포 할 수있는 프로세스가 있습니다. 내 S3 통합 프로세스에서 웹 클래스가 없으며 webapp에 Amazon 종속성이 없지만 API 및 impl에서 모든 것을 공유 할 수 있습니다.

3 개월 후에 우리는 REST 웹 애플리케이션을 만들기로 결정했습니다. 우리는 기존 웹 애플리케이션에서 새로운 URL 매핑 대신 별도의 애플리케이션으로이 작업을 수행하려고합니다. 단순한. 모듈 하나가 추가되었습니다. 특별한 수정없이 maven 빌드의 결과로 생성 된 다른 webapp입니다. 비즈니스 로직은 webapp와 rest-webapp간에 쉽게 공유되며 필요에 따라 비즈니스 로직을 배포 할 수 있습니다.

+0

나보다 낫습니다. 가장 좋은 유스 케이스는 지금까지 설명하고 또한 다른 대답에 대한 귀하의 의견은 내가 생각/느낀 점을 확인합니다. 다중 모듈은 다중 패키지 또는 거대한 프로젝트의 가치를 제공합니다. – benzonico

+0

필자는 결코 maven의 fanboi는 아니지만 "제대로 작동했다"는 사례가 있으며 이것은 나에게 강점 중 하나 인 것 같습니다. 다행스럽게도 도움이되었습니다. – digitaljoel

+0

실제로이 답변을 사용하여 다중 모듈을 사용하지 않아야 함을 입증하려고합니다. – benzonico

1

나는 멀티를 사용하는 대부분의 프로젝트에서 정확하다고 생각합니다. 모듈은 실제로 필요하지 않습니다.

내가 일하는 곳에서 우리는 멀티 모듈 프로젝트를 사용합니다 (그리고 나는 좋은 이유라고 생각합니다). 우리는 서비스 지향 아키텍처 비슷한, 그래서

  • 구현 모듈
  • 전쟁 (클라이언트 및 구현 사이의 개체를 공유하고있다) 각 응용 프로그램

    • 클라이언트 모듈
    • 인터페이스 모듈이 모듈

    나는 그 구현과 전쟁 모듈을 같은 실제 모듈에 넣는 것이 좋을 것이지만 이것의 (틀림없이) 이점은 매우 분명한 분열이다. 문제를 해결하는 클래스와 응용 프로그램이 외부 세계와 통신하는 방법에 대해 설명합니다.

    웹 응용 프로그램 만 사용한 이전 프로젝트에서 나는 사용하고있는 모듈을 사용하여 테스트를 더 쉽게 만들면서 모든 것을 같은 모듈에 넣으려고했습니다.

  • 10

    멀티 모듈의 주요 장점은 한 번에 모든 모듈을 구축 할 수

    • 하나 개 받는다는 명령입니다.
    • 그리고 가장 중요한 사항은 빌드 주문을 처리하는 것입니다.
    • CI 서버를 구성하는 것도 매우 쉽습니다. 모든 것을 빌드하기위한 하나의 젠킨스 작업.

    이미 약 30 개의 서브 모듈이있는 프로젝트에서 작업했습니다. 때로는 모듈 이상으로 무언가를 변경해야하고, 하나의 명령 만 실행하고 컴파일해야하는 모든 것이 올바른 순서로 컴파일되도록해야합니다.

    편집

    왜 30 개 서브 모듈?

    많은 기능을 갖춘 거대한 프레임 워크, 많은 개발자, 모듈 기반의 기능 분리. 실제 사용 사례이고 코드를 모듈로 분리하는 것이 실제로 의미가있었습니다.

    +0

    빌드 순서는 나에게 유효한 인수로 보일 수 있지만 왜 30 (!) 서브 모듈이 필요한지 설명 할 수 있습니까? – benzonico

    +0

    저는 한 프로젝트에 12-15 개의 팀이있는 상황에서 일했습니다. 우리는 약 30 개의 모듈을 가진 메인 프로젝트를 가지고있었습니다. 각 팀은 자신의 지역 (2-4 모듈)의 소유권을 가지며 팀 간의 책임을 명확히 구분했습니다. 완벽하지는 않지만 50 명의 개발자가 항상 같은 패키지에서 작업하는 것만 큼 나쁘지 않았습니다. (다른 시간에 경험 한 적이 있습니다) – digitaljoel

    +0

    대답의 의미가 –

    관련 문제