2014-07-07 2 views
1

와 받는다는 멀티 모듈 프로젝트에 모듈을 추가 나는 현재 우리가 다른 SVN 디렉토리에서 다른 받는다는 프로젝트, 이런 일이 있어요 :프로젝트에서 다른 상대 경로

(simplified) 
...service/rest-api/trunk/project1 
...service/common/trunk/project2 
...service/common/trunk/parent-aggregator 

마지막 하나를 (학부모 aggregator)는 공유 종속성과 다중 모듈 구성을 포함하는 maven pom 프로젝트입니다.

이클립스 svn (subclipse) 클라이언트를 사용하고 있기 때문에 모든 프로젝트를 같은 디렉토리에있는 모든 Eclipse 프로젝트로 가져올 수 있으므로 만든 구성에서 상대 경로를 사용할 수 있습니다.

부모 - 수집기의 pom.xml : 내 동료 중 하나가 거북이 SVN 클라이언트를 사용하여 프로젝트를 가지고 다음, 거북이는 자신의 지역에서 SVN 디렉토리 구조를 복제하는 이클립스 프로젝트를 가져올 때

<modules> 
    <module>../project1</module> 
    <module>../project2</module> 
</modules> 

문제는 온 파일 시스템.

그래서 부모 - 수집기에 mvn 새로 설치를 시도 할 때마다 project1이 (가) 도달 할 수 없기 때문에 실패합니다. 그의 기계 에서처럼 프로젝트가 같은 디렉토리에 있지 않은 것처럼 말이됩니다.

두 구조가 모두 작동하도록 모듈을 참조 할 수있는 방법이 있습니까? 그것이 작동하지 않는

<module>artifactId</module> 

:

은 내가 artifactId를를 사용하는 지금까지 시도했다.

<name>project1</name> 

프로젝트 1의 pom.xml 파일 내에서

그리고 모듈을 참조 :

또한 먼저 정의하여, 프로젝트 이름을 추가하는 시도

<module>project1</module> 

을하지만 말해 유지 그것은 자식 모듈을 찾을 수 없다는 것입니다.

우리가 자신의 로컬 컴퓨터에서 다른 상대 경로를 데 사용하는 임시 해결책 : 우리는 우리가 SVN을 유지 할 수있는 하나의 방법이 있어야합니다 나는 전혀 좋아하지 않는다

<modules> 
    <module>../../../rest-api/trunk/project1</module> 
    <module>../project2</module> 
</modules> 

.

답변

0

맨 먼저해야 할 일은 SVN뿐 아니라 구조를 변경하는 것입니다. 다중 모듈 빌드가있는 경우 해당 모듈이 모두 속해 있다는 것을 표현하면 구조에 표현해야합니다.

+--- root (pom.xml) 
     +--- mod-rest-api (pom.xml) 
     +--- mod-war (pom.xml) 
     +--- mod-p1 (pom.xml) 

이 같은 경우에만이 위의 항목에 따라 프로젝트를 변경하는 경우

:이 항목을 단순화하고 당신이 당신의 부모를위한 relativepath를 항목이 필요가 없습니다

<modules> 
    <module>mod-rest-api</module> 
    <module>mod-war</module> 
    <module>mod-p1</module> 
</modules> 

.당신이 URL/project/tags..는 나의 관점에서처럼, 모듈의 항목을 갖는 URL/project/branches

뭔가를 표시하는 빌드 냄새가 잘못 그래서

URL/project/trunk 
    +--- root (pom.xml) 
     +--- mod-rest-api (pom.xml) 
     +--- mod-war (pom.xml) 
     +--- mod-p1 (pom.xml) 

: 은 또한 당신은뿐만 아니라 SVN의 구조를 가질 수 폴더 구조와 프로젝트 아키텍처의 관계.

+0

글쎄, 구조를 변경하는 것은 분명한 해결책이지만 선험적으로 결정 되었기 때문에 내가 제어 할 수없는 것입니다. 다른 팀의 다른 maven 프로젝트가 없으므로 구조를 변경하거나 영향을 줄 수 없습니다. 보다 진보 된 참조가 가능합니다. – raspacorp

+0

고급 참조 란 무엇을 의미합니까? 잘못된 방법으로 Maven을 사용하고있는 것 같습니다. 구조를 변경할 수 없다면 다중 모듈 빌드 또는 애그리 게이터를 사용해서는 안됩니다. 기본 종속성을 사용하는 것이 더 좋습니다. – khmarbaise

+1

고급 참조는 모듈을 참조하는보다 다양한 방법으로, 다른 기술의 여러 소스 코드와 구성 항목을 포함 할 수있는 전체 조직 리포지토리를 구성해야합니다. Maven은 그것을 좋아하지 않습니다. – raspacorp