2012-09-06 3 views
1

다중 모듈 프로젝트의 분기 방법에 대해 약간의 의문이 있습니다. CVS에 내 maven 프로젝트가 있는데 지점을 만들려고합니다. 내가 제시 한 제안 된 솔루션이 마음에 들지 않습니다. 나는 수정하고있는 모듈 대신 전체 프로젝트를 브랜치하도록 고집한다.CVS에서 여러 모듈 maven 프로젝트를 분기하는 방법은 무엇입니까?

괜찮습니까?

이 모듈은 프로젝트 자체 일 수 있지만 모든 클라이언트의 프로젝트를 하나의 프로젝트에 모듈로 마무리하기 위해 모듈로 사용했습니다.

감사합니다.

+0

이러한 프로젝트의 폴더 구조를 예제로 표시 할 수 있습니까? – khmarbaise

답변

0

프로젝트가 더 간단하고 아무런 문제가 발생하지 않기 때문에 전체 프로젝트를 분기해야합니다. 더욱이 다중 모듈 프로젝트의 단일 모듈을 브랜치한다면, 그러한 것들을 공개하고 모듈 간의 동기화를 풀기 위해 문제가 발생할 것입니다.

0

나는 똑같은 생각을 해왔다. 그리고 maven 사용자 목록에서이 질문을하려고 시도하기도했지만 답변이 거의 없습니다. 가장 좋은 대답은 다음과 같습니다.

먼저, 세계의 일부 현실이 세계를 만듭니다.

1) 다중 모듈 빌드는 여러 그룹으로 구성된 빌드를 만드는 좋은 방법입니다. 그러나 나는 "A가 B보다 먼저 만들어 져야한다"는 단순한 사용 사례에서 요구되는 것보다 모듈끼리 더 단단히 결합하고 있다고 생각합니다.이 느슨한 결합은 Jenkins 트리거에 의해 더 잘 처리됩니다.

2) 다중 모듈 빌드는 디렉토리 트리로 구성되기를 원하지만 반드시 원하는 것은 아닙니다. 이것은 소스 제어 구조, 분기 및 빌드 논리 사이의 결합을 만듭니다.

3) 지점은 모든 포인트 1과 2뿐만 아니라 소프트웨어 제공/출시 모델과 관련된 복잡한 문제입니다. 개발자들에게는 악몽이 될 수도 있습니다. . .

내 (자신에 대한뿐만 아니라 당신 같은) suggestsions :

1) 빌드, 소스 제어 구조, 당신의 지점, 또는 아무것도 만들지 마십시오. . . 우리의 일련의 요구 사항을 충족시켜야합니다. 소프트웨어 엔지니어링의 다른 측면과 마찬가지로 요구 사항도 필수적입니다. 그들은 코딩보다이 영역에서 훨씬 더 쉽게 건너 뛴 것처럼 보입니다.

2) 실제로 동시 개발을 할 필요가없는 것은 아무것도 분기하지 마십시오. 빌드 구조로 인해 동시 개발이 실제로 보이지 않는 지점 코드로 강제 전환되는 경우 문제가 있습니다.

3) 요구 사항을 얻은 다음 가능한 빌드, scm, 릴리스 솔루션을 만들고이를 종이로 가져 와서 분기 및 건물이 어떻게 작동하는지 확인하십시오.

이것은 설명 일 수도 있지만 실제로 "대답"이 간단하다고 생각하지 않습니다. 그래서 이것은 충분해야합니다.

0

나는 이것에 대해 잠시 생각했다. 수백 개의 사람들이이 문제에 직면해야하기 때문에 매우 놀라운 것은 없다는 점에서 나는 @chad에 동의합니다.

내 경험을 받는다는 + CVS + 젠킨스의 맥락에서, 그래서 내가 말할 것이다 장점 중 일부는 젠킨스의 맥락에서 장점이 정말 마음에 계속

필자는 단지를 분기해야한다는 것입니다 실제로 다른 코드 (기본적으로 chad의 # 2)를 가진 서브 모듈. 그것보다 더, 나는 당신이 canonical maven 다중 - 모듈 구조를 조정할 때 전체 분기와 건물이 훨씬 더 잘된다는 것을 발견했다; 특히 집계 자 POM을 상위 POM (일반적으로 단일 POM에 있음)에서 분리합니다. 이것이 당신을 사게 될 것입니다. 이제는 빌드 시스템에서 각 하위 모듈 + 상위 POM을 완전히 분리하고 자신의 의지로 분기 할 수 있습니다. 분리하지 않으면 젠킨스와 같은 시스템이 분기가 불가능한 자체 서브 모듈을 생성합니다.

그래서 기본적으로 내 구조 완전성은이

root 
--pom.xml (aggregator) 
--parent 
----pom.xml 
--subModA 
----pom.xml 
--subModB 
----pom.xml 

처럼 보이는, 전체 구조를 분기 내 가장 큰 문제는이 같은 여러 가지의 부품을 가지고있다. 이것은 종속성을 복잡하게 만듭니다. subModA의 v1.1에 subModB의 v1.1이 필요하고, 변경 사항이 없기 때문에 subModB v1.0에서는 실제로 1.0이 완벽하게 실패 할 것입니다. 반면에 변경하지 않은 모듈 (예 : subModB)에서 분기를 수행하지만 버전을 증가시키지 않으면 똑같은 코드의 여러 스냅 샷을 배포하게됩니다. 이 불필요한 배포로 인해 불필요한 작업이 트리거 될 수 있습니다 (예 : QA 테스트).