2010-01-13 2 views

답변

9

이것은 꽤 주관적인 질문입니다. 저는 일반적으로 다음과 같은 경험 법칙을 적용합니다. 바이너리를 빌드하는 코드가있는 경우, 바이너리가 아닌 코드를 체크인하십시오. 내 코드를 실행하는 데 바이너리가 필요하며 외부 소스에서 온 경우 바이너리를 체크인하십시오. 나는 가능한 한, 당신은 Maven를 사용하는 것을 추천 할 것입니다 당신이 당신의 저장소에 일부 타사 바이너리 체크인과 함께 올 수도 어떤 법적 조건에 적합 할 것

주 ..

+0

대부분 오픈 소스 라이브러리를 사용하고 있기 때문에 법적 문제가 있다고 생각하지 않습니다. 네! 나는 모든 JARS를 체크인하기로 결정했다. – Veera

7

. 그런 다음 타사 JAR을 저장소로 체크인하여 개발 팀간에 공유 할 필요는 없습니다 (대개의 경우).

Maven은 두 가지 주요 작업, 빌드 자동화 및 종속성 관리를 수행합니다. 각 프로젝트에는 다른 것들 중에서 종속성으로 사용하는 JAR을 구성하는 설명자 파일이 있습니다. 이것에 대한 좋은 점은 Maven이 자동으로 JAR의 의존성과 의존성 등을 해결한다는 것입니다.

+1

Ant에 익숙하다면 Ivy Apache (http://ant.apache.org/ivy/)를 더 쉽게 이해할 수 있습니다. – notnoop

+3

사실, Ant/Ivy와 Maven을 모두 사용했지만, Maven을 선호합니다. – danben

1

중간 규모 개발 팀을위한 SVN 저장소를 관리하며 사용 편의성을 위해 우리가 필요로하는 체크 인 바이너리를 저장합니다. 어떤 경우에는 우리 자신조차도.

나는 여전히 관련이 있다고 생각하지만, SVN은 역사적으로 바이너리에서 제대로 수행되지 못했습니다. IBM의 Java 개발자가이 문제에 대해 조사하고 조사하여 그의 연구 결과를 썼습니다. 당신은 그것을 유용하게 찾을 수 있습니다 : 표시된 실제 값은 가능성은 그래서

이 조사의 결과는, 조사되는 시스템 명확하게 특정 :

여기 Performance tuning Subversion: Store and handle binaries without the performance drag

는 테이크 아웃입니다 은 다른 시스템에 많은 의미가 있습니다. 패턴은 Subversion 시스템에서 복제되기 때문에 더 중요합니다 ( ). 전복 진 집합을 저장할 때 우리의 연구 결과에 따르면 :

  • 시간이 가장 효율적인 방법은 진을 포함 하나, 압축 파일을 생성한다.
  • 가장 공간 효율적인 방법은 일반 디렉토리 구조에서 Subversion의 효율적인 체크인 스크립트를 사용하는 것입니다.
  • Subversion 서버에서 어떤 형태의 인증을 사용하면 성능이 저하됩니다.
  • 전용 강력한 컴퓨터가 Subversion 실행에 적합합니다.
+0

링크는 지금 404입니다 – koppor

+0

@koppor : WayBackMachine to the rescue : 다행히도 18 명이이 페이지를 저장할 선견지명이있었습니다. :) –

2

개인적으로 나는 프로젝트의 종속성을 SCM 버전 제어 저장소에 체크인하는 것을 피하려고합니다.일반적으로 다른 답변에서 제안 된대로 Maven을 사용하고이 리소스를 개발 팀에게 로컬로 제공하고 프로젝트의 완성/버전 관리/출시 된 아티팩트가있을 수있는 위치를 제공하는 회사 내부 Maven 저장소를 배포하는 방법이 있습니다. .

Jars가 SCM 인 문제는 맨 먼저, 소스 코드을 관리하기위한 것이며, 그 목적을 위해 최적화되었습니다. 컴파일 된 아티팩트는 소스 코드가 아니며 바이너리이기 때문에 대부분의 SCM에서는 바이너리 파일을 '비교할 수 없으므로 바이너리 복사본을 만들고있는 바이너리를 일반적으로 분기하거나 업데이트 할 때 바이너리가됩니다.

종속성을 체크인해야하는 두 개의 프로젝트가있는 경우 어떻게해야합니까? 각 프로젝트에 별도로 deps를 체크인하고 중복을 착용합니까? 아니면 의존성을 포함하는 세 번째 프로젝트를 만드나요? 이제는 해당 프로젝트에서 jar 파일을 수동으로 관리하고 있습니다. 두 프로젝트에서 상호 호환되지 않는 종속성이 필요한 경우 어떻게해야합니까?

셋째, 프로젝트 간 종속성을 어떻게 관리합니까 (프로젝트 중 하나가 다른 프로젝트와 종속되어있는 경우)? 하나의 jar 파일이 다른 파일에 체크인되어 있습니까? 버전 관리 및 기타 변경 제어는 어떻게됩니까? 두 프로젝트를 체크 아웃하고 엄격한 순서로 빌드해야합니다.

나의 경험과 의견으로는, 보통 이러한 문제는 중간 정도의 복잡성만으로 충분하기 때문에 질문에 확실하게 대답 할 수 있습니다. 아니오, jar 파일 종속성을 체크인하는 것이 허용되지 않습니다. 소스 코드 제어 시스템에서 의존성을 관리하고 저장하는 방법을 제공하는 Maven 또는 Ant + Ivy (또는 다른 대안)와 같은 빌드 시스템을 사용하십시오.

관련 문제