중첩에 투표합니다. IDEA 9를 사용하여 프로젝트 창에 중첩을 표시하므로 프레젠테이션은 논리적 인 프로젝트 구조를 반영합니다. 나는 이름이 매우 유사 특히, 중첩 된 일을 유지 선호
- (이 평평했다. 이는 8.1의 경우 아니었다) - 명령 프롬프트를 사용하는 경우 탐색이 훨씬 쉬워집니다. myapp-layer-component와 같은 이름의 프로젝트가 있으므로 접두사가 모두 같은 접두사로 시작하고 많은 레이어가 같은 레이어를 사용하므로 명령 줄에서 자동 완성을 사용하면 쓸모가 없습니다. 이름 (appname, layer 또는 component)의 각 부분이 디렉토리 구조의 각 수준에서 한 번만 반복되므로 중첩 된 구조로 분리하는 것이 훨씬 쉽습니다.
명령 줄에서 빌드하는 경우 프로젝트의 하위 집합을 만드는 것이 훨씬 쉽습니다. db 모델에서 작업 할 경우 해당 영역의 모든 프로젝트를 빌드해야합니다. 파일을 평평하게 만들 때 까다로운 일입니다. 제가 알고있는 유일한 방법은 maven에 -pl
인수를 사용하고 빌드 할 proejct를 지정하는 것입니다. 중첩 된 디렉터리를 사용하면 mvn
디렉터리로 cd
을 db
디렉터리로 방금 실행합니다.
예를 들어
, 대신
myapp-web-gui1
myapp-web-gui2
myapp-web-base
myapp-svc-clustered
myapp-svc-clustered-integrationtest
myapp-svc-simple
myapp-db-model
myapp-db-hibernate
우리는 구조 또한 통합 테스트를 위해 둥지를 추가 할 수
\myapp
\web
\gui1
pom.xml
\gui2
pom.xml (other poms omitted to keep it short)
\base
\svc
\clustered
\clustered-it
\simple
\db
\model
\hibernate
을 가지고 있지만이 너무 멀리 포인트를 운전처럼 보인다. 중첩와
, 당신은 또한 상속의 모든 혜택을 얻을 (그리고 그것의 일부는 고통 ... 야)
나는이 함께 했어 유일한 문제는 디렉토리 이름이 이슈 ID와 일치하지 않는다는 것입니다 . (나는 여전히 전체 artifactIds를 사용하고 있습니다.) 그래서 각 프로젝트는 더 이상 부모 pom에서 추론 할 수 없으므로 SCM 경로를 명시 적으로 정의해야합니다. 물론 각 디렉토리는 artifactId와 동일하게 만들 수 있으며 SCM 세부 정보는 상위에서 유추 될 수 있지만 긴 디렉토리 이름은 다소 다루기 힘듭니다.
그 다른 답변은 정말로 감사합니다. –