2011-03-10 3 views
3

저는 하나의 Visual Studio/Eclipse/NetBeans 프로젝트에 상주하기에 너무 큰 프로젝트에서 작업하며 다른 팀에서 사용하는 소프트웨어 라이브러리를 개발하고 유지 관리하는 "공통 소프트웨어"팀이 있습니다.큰 프로젝트에서 일반적인 소프트웨어를 어떻게 관리합니까?

일반적인 소프트웨어의 개발 및 변경을 관리하는 방법에 어려움을 겪고 있습니다. 메서드 서명과 클래스가 변경되면 이전 버전을 유지하고 해당 버전을 더 이상 사용하지 않는 것으로 표시합니까? 현재 계획은 2 주마다 새로운 공통 빌드 라이브러리를 배포하는 것입니다.

답변

1

확실히 저장소를 설정하십시오. Maven-hater가 Gradle을 체크 아웃하는 경우, Ivy를 사용합니다. Maven은 복잡하다는 평판을 가지고 있지만 더 나은 도구 지원을 제공합니다.IDE는 Maven을 out-of-the-box 또는 플러그인과 함께 지원하므로 프로젝트의 jar가 무엇을 사용하는지 보여주는 그래프를 제공하므로 쉽게 충돌을 볼 수 있습니다.

Ivy 또는 Maven이 종속성을 분류하여 프로젝트에서 올바른 버전을 사용하도록합니다. 각 프로젝트는 Maven의 pom.xml에 어떤 공통 라이브러리를 사용하는지 판별해야합니다.

+0

우리는 지난 3 개월 동안 우리의 빌드 프레임 워크를 통해 파일 시스템 저장소로 Ivy를 사용 해왔다. 소비자를위한 학습 곡선은 매우 낮았으며 아이비로 전환하는 능력을 아주 좋아합니다. 일부 팀은 자신의 프로젝트를 파일 시스템의 Ivy 저장소에 직접 연결하고 다른 팀은 Ivy 파일을 생성했으며 두 경우 모두 훌륭하게 작동합니다. – Brian

0

대부분의 버전 제어 시스템의 공통된 특징은 외부 분기를 사용하는 것입니다. 공통 소프트웨어는 공유 저장소에서 가져와 업데이트시 각 프로젝트에 통합됩니다. 공통된 소프트웨어의 공개 API에 대한 문서 변경에 핵심적인 어려움이 있습니다. 사용되지 않는 서명과 의사 소통에 대한 좋은 커뮤니케이션은 사용이 중단 된 방법을 찾는 것이 고통 스럽다는 것을 입증 할 수있는 지속적인 통합입니다.

0

몇 가지 옵션이 있습니다.

옵션 A : 당신이 개미 + 아이비 또는 메이븐을 사용하는 것이 좋습니다 그 공통 프로젝트의 코드와 내부 저장소를 만들 것입니다 자바 기반 시스템의 저장소

를 사용합니다.

옵션 B : 클래스 경로 프로젝트 저장소를 설정하는 것은 당신이 할 수있는 것은이 작업이

classpath\ 
    docs\ 
    sources\ 
    jars\ 

팀에서 다음과 같은 세 가지 디렉토리와 클래스 경로라는 이클립스 프로젝트를 만드는 것입니다, 너무 많은 경우 공통 프로젝트에서 공통 코드를 컴파일하고 클래스 경로 프로젝트에 배치하는 빌드 스크립트를 가질 수 있습니다. 나머지 개발 팀은 클래스 경로 프로젝트를 체크 아웃하고 개발 중에 파일을 참조해야합니다. 일에 전념 풀 타임 사람이

메소드 서명에 변화를 관리하는 방법은 일반 버전을 따르는 것입니다 내가 옵션 A. 갈 경우에 빌드가 아닌

는 개인적으로 난 옵션 B의 팬이다 협약에 따라 메이저 버전 번호를 늘리면 종속 코드가 변경되어야한다고 말하면서 부 버전 번호가 증가하면 종속 코드를 변경할 필요가 없다고 말할 수 있습니다. IDE 및 빌드 시스템에서 경고를 발행하고 코더가 최신 버전으로 전환 할 수 있어야하므로 코드를 더 이상 사용하지 않는 것으로 표시하는 것은 매우 실용적인 옵션입니다. 같은 팀이 공통 코드와 기본 프로젝트를 변경하는 경우 실제 작업 프로젝트를 모두 동일한 작업 공간에서 체크 아웃해야하므로 팩터링 도구가 작업을 수행 할 수 있습니다.

공통된 코드가 여러 프로젝트에서 사용되지 않는 한 한 프로젝트에서 모든 코드를 유지하므로 여러 소스 폴더를 사용하여 코드의 여러 부분으로 쉽게 이동할 수 있습니다. 개발자가 문제를 일으키는 물건을 체크인하는 데 문제가있는 경우, 체크 인 빈도가 높거나 개발자가 트렁크에서 업무 분기로 병합되는 지점에서 자주 작업하여 동기화 문제를 해결할 것을 권장합니다. 트렁크에 브랜치를 다시 합치면 최신 버전의 Subversion이 이에 대한 적절한 지원을 제공하며, Mercurial, git hub와 같은 DVCS 소스 제어 시스템은이 기능이 뛰어납니다.

관련 문제