2010-06-21 3 views
2

많은 모듈로 구성된 많은 제품이 있으며 그 중 일부는 일부 제품간에 공유됩니다. 그것들은 몇 가지 버전 관리 저장소에 퍼져 있습니다.버전 관리의 다중 모듈 소스 프로젝트에 대한 선언적 종속성 처리

제품은 모든 모듈을 체크 아웃하고 올바른 순서로 모듈을 빌드하는 마스터 앤트 스크립트로 작성됩니다. 모듈에는 자체 릴리스주기가 없습니다.

이제는 선언적 종속성 관리로 가고 싶지만, 모든 솔루션 (Maven, Ivy)은 버전 제어하에 소스 코드보다는 인공물에 의존하는 것으로 보입니다. 유물에 따라 우리를 위해 머리에 물건을 바꿀 것이므로, 나는 오히려하지 않을 것입니다. Ivy와 같은 것이 좋겠지 만, 내 제품은 modules foo, bar and baz (branch 2.0)에 의존하고 있으며, 하나 이상의 소스 코드 관리자 (일부 구성에 지정되어 있음)의 소스 코드를 체크 아웃 할 수 있습니다. 평평한 작업 공간.

나는 당신이 문제의 같은 종류에 직면 할 것 때문에 의존성 관리의 대한

답변

1

Gradle을가 아이비 프로젝트를 내장 ... 그래서 그와 맞는 솔루션을 많이 주시면 감사하겠습니다, 구축 Gradle을 사용할 계획 .

종속성 관리는 대형 모 놀리 식 빌드를 다른 종속 모듈에서 사용할 수 있도록 공용 저장소에 출력하는 작은 구성 요소 빌드로 나눌 수있는 메커니즘입니다.

이렇게하면 먼저 큰 빌드를 분해하거나 종속성 관리를 사용하여 제 3 자 오픈 소스 라이브러리를 제어하려는 결정을 내려야합니다.

1) :

당신은 내가 중앙 빌드를 만들려면 다음 방법을 추천 할 수있는 여러 SCM 저장소를 가지고 있다는 사실을 통제 할 수없는 가정 (난 당신이 ANT + 전복을 사용하고 있으리라 믿고있어) 자식 모듈을 포함하는 마스터 프로젝트 만들기

2) 각 자식 모듈은 external 정의로 마스터 프로젝트에 추가됩니다. 이는 다시 자동으로

3) 의 build.xml 마스터 프로젝트가 올바른 순서로 하위 프로젝트를 빌드하는 아이비에게 buildlist 작업을 사용하는 빌드 파일이 들어있는 각 하위 프로젝트를 체크 아웃 마스터 중 하나 개 체크 아웃을 할 수 있습니다 다양한 하위 프로젝트 내의 선언 된 종속성을 기반으로합니다. ivy.xml 파일.

멀티 프로젝트 빌드의 예는 내가 REFIX이 생각 here

+0

Gradle을의 "프로젝트 종속성"올바른 모듈을 구축 나는 (내가 생각하는) 필요하다 모든 것이 체크 아웃되면 주문 및 참조 된 항아리. svn : externals가 작동 할 수는 있지만 한 곳 이상에서 의존성을 지정하는 것에 만족스럽지 않습니다. 또한 정적이며 "다른 모듈이있는 경우 같은 이름의 브랜치를 가져옵니다. 그렇지 않으면 트렁크를 얻습니다"와 같은 체크 아웃 시간 마술을 허용하지 않습니다. 여기 내 마음을 정리하기 전에 더 많은 제안을하고 있습니다 ...:) – simon

+0

Gradle의 다중 프로젝트 빌드는 동일한 방식으로 작동합니다. http://www.gradle.org/0.9-preview-3/docs/userguide/multi_project_builds.html –