2012-08-07 2 views
1

나는 4 개발자에 의해 공유 된 버전 관리 시스템 (자식)에있는 작은 자바 프로젝트를 가지고있다. 이 프로젝트에서 Maven을 빌드 도구로 사용할 생각입니다.메이븐 : 저장소

종속성 관리가 필요하지만 필자는 원하지 않습니다. - 종속성 자동 업데이트 (이로 인해 소프트웨어가 손상 될 수 있음). - 인터넷 연결을 사용하여 원격 저장소에서 종속성을 다운로드하고 코드를 컴파일 할 수 있습니다.

따라서, 질문 :

1) 나는) 메이븐은 VCS에서 공유 로컬 종속 (예 : 항아리를 사용하도록 구성 할 수 있습니까? 몇 가지 프로젝트간에 여러 종속성이 공유되지 않으며 종속성이 거의 업데이트되지 않으므로 Maven 저장소를 사용하면 나에게 가치가 없습니다.

2)는 메이븐 저장소를 사용하도록 선택하는 경우, 내 로컬 네트워크에서 하나가 구성 할 수 있습니다? 필자는 원격 저장소 미러 나 원격 저장소에 대한 포털을 원하지 않습니다. 내 로컬 네트워크의 서버에있는 독립 실행 형 저장소가 내 종속성을 원합니다.

3) I 원격 저장소와 기본 메이븐 접근 방식을 사용하는 경우 모든 종속성이 처음 다운로드 한 후, 나는 의존성 업데이트를 끌 수 있을까?

미리 도움을 청하십시오.

+0

종속성은 자동으로 업데이트되지 않으므로'pom.xml' 파일에 지정한대로 ''과 동일하게 유지됩니다. 예외는 _-SNAPSHOT_ 버전이며 프로덕션 환경에서는 사용해서는 안됩니다. – matsev

답변

3

대답 1 :

예는, 시스템-범위 종속성을 구글,하지만 수 있습니다 당신은 키 기능 중 하나를 제거합니다 때문에이 작업을 수행하는 것은 좋지 않습니다.

<dependency> 
    <groupId>com.mycompany</groupId> 
    <artifactId>app-lib</artifactId> 
    <version>3.1.0</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/libs/app-lib-3.1.0.jar</systemPath> 
</dependency> 

대답 2 :

예 할 수 있습니다 - Artifactory - Nexus

대답 3 :

예 당신이 할 수있는

. 이 경우에 --- 오프라인 플래그 또는 더 나은 접근 방법을 사용할 수 있습니다. 모든 종속성을 해제합니다.

몇 가지 생각 : 종속성 관리를 사용하지 않고 종속 관리 시스템을 사용하려는 경우 이상하게 들릴 수 있습니다. 당신이 두려워하는 경우

, 당신의 libs와 내 변경 사항이 코드를 깰 수 있다는 것을, 다만 스냅 샷을 사용하지 마십시오. 일종의 버전 체계를 사용해보세요. 릴리스에서 Z 변경, 병이 호환되어야하는 경우 우리는

x.y.z

  • 를 사용합니다.
  • y가 바뀌면 yous 코드를 변경해야합니다.
  • x가 변경되면 ... 계속 업데이트해야합니다.
1

인터넷 연결에 의존하고 있다는 것에 대한 귀하의 우려는 유효하지만 귀하의 생각만큼 나쁘지는 않습니다.

종속성이 중앙 저장소에서 다운로드 된 후 하드 드라이브의 캐시 ("~/.m2/repository"에 있음)에 저장됩니다. 그 이후부터 캐시의 복사본이 사용되며 응용 프로그램을 컴파일하는 데 인터넷 연결이 더 이상 필요하지 않습니다.

Maven에서 첫 번째 프로젝트를 컴파일 할 때 쓰레기를 다운로드해야합니다. 그러나 그 이후에 모든 후속 컴파일 작업이 훨씬 빨라지며 다운로드 할 필요가 없습니다.

또한 Maven의 버전 체계는 종속성의 모든 "릴리스"버전 이 Central 리포지토리에 배포 된 후에을 변경할 수 없도록합니다. 예를 들어 "commons-io"버전 2.2를 사용하고 있다면이 버전의 라이브러리가 항상 동일하게 유지된다는 것을 알고 있습니다. 새 버전을 출시하지 않으면 변경이 불가능합니다.

"스냅 샷"버전은 일 수 있으며으로 변경됩니다. 라이브러리의 버전이 스냅 샷이면 "-SNAPSHOT"으로 끝납니다 (예 : "1.2-SNAPSHOT"은 결국 라이브러리가 "1.2"로 릴리스됨을 의미합니다). 중앙 저장소에서 스냅 샷 빌드를 허용하지 않는다고 생각합니다. 어쨌든 프로덕션 코드에서 사용해서는 안됩니다.

+0

로컬 저장소는 하드 드라이브의 어느 곳에 나 위치 할 수 있습니다. 이것은 maven 설정 파일에 설정되어 있습니다. 또한 스냅 샷을 언급 할 때 +1합니다. –

0

인터넷 연결은 첫 번째 컴파일에만 필요하다고 생각했지만 코드를 변경할 때마다 여러 가지 다운로드 메시지가 표시됩니다. 이와 같은 수신함을 :

다운로드 : http://repo.maven.apache.org/maven2/org/eclipse/core/resources/maven-metadata.xml

다운로드 : http://repository.springsource.com/maven/bundles/external/org/eclipse/core/resources/maven-metadata.xml

다운로드 : http://repository.springsource.com/maven/bundles/release/org/eclipse/core/resources/maven-metadata.xml

다운로드 : 왜 그 https://oss.sonatype.org/content/repositories/snapshots/org/eclipse/core/resources/maven-metadata.xml

입니까? Maven이이 저장소에서 업데이트를 찾고 있습니까? 아니면 이러한 메타 데이터 xml을 자주 다운로드해야하는 또 다른 이유가 있습니까?