2012-01-09 4 views
2

개발자가보다 쉽고 쉽게 작업 할 수 있도록하기 위해 우리 환경에 맞는 맞춤형 프로젝트를 생성하는 Maven Archetype을 구현했습니다. Archetype은 잘 작동하지만 한 가지 요점에 대한 설정을 완료하지는 못합니다. 생성 된 프로젝트에는 Mercurial 저장소가 없습니다.Maven Archetype에서 Mercurial Repository 초기화하기

hg init을 원형에서 실행할 수 있습니까?

이 요청의 핵심 이유는 개발자가 신제품을 만들고 구성 할 때 수행해야하는 단계를 줄이려고하기 때문입니다. 5 개 또는 그 이상의 모듈을 만들어야 할 수도 있습니다. 각 모듈에는 자체 체크인이 필요합니다. 모듈은 아키텍처에서 독립적으로 배포 될 수 있으므로 EAR 번들로 그룹화되지 않습니다.

대답은 "아니오, 해결 방법이 없습니다."가능합니다. 이것은 자동화를 통해 작동 시간을 0으로 최적화하는 것에 관한 것입니다. Maven의 메커니즘을 사용하여 자동화 할 수없는 경우 하위 표준 솔루션을 찾는 것보다 솔루션을 구현하지 않을 것입니다.

내가 고려해 본 한 가지 해결책은 ANT 플러그인을 사용하여 hg을 호출하는 것입니다. 이 솔루션에 대해 내가 싫어하는 부분은 경로에서 Mercurial 실행 파일을 사용할 수있는 사용자에게 의존한다는 것입니다. 그것은 실패 지점을 만들 수있는 의존성입니다. 이러한 실패 지점은 초기 설정을 단순화하기보다는 복잡하게 만듭니다. (Ergo, 왜 "해결책이없는"가능한 대답입니까?)

지금까지 여러분의 제안에 감사드립니다!

+0

경로에 실행 파일이 없으면 어떻게 커밋 할 수 있습니까? 이 종속성을 어떻게 가질 수없고 어떻게 문제가되는지 나는 알 수 없다. –

+0

글쎄, 좋은 질문입니다. 나는 심지어 실현 가능한 것을 요구하고 있는가? Maven이 필요한 작업을 내부적으로 관리 할 수 ​​있습니까? 아니면 모든 솔루션 (예 : Maven SCM)이 설치되는 외부 실행 파일에 의존합니까? 그래픽 도구를 설치하는 사용자는 PATH에 필요한 도구가 없어도 도구를 통해 Mercurial 작업을 수행 할 수 있습니다. – 64BitBob

답변

1

hg init 및 기타 필요한 메이븐 플러그인을 작성하는 것이 어떻습니까? 이런 기본적인 Maven 플러그인을 작성하는 것은 그렇게 어렵지 않습니다.

개인적으로 나는 get the source for the scm plugin이고, init 목표를 플러그인에 추가합니다. 그것이 가장 깨끗한 방법 일 것입니다.

scm 플러그인에서 init 목표가 없다는 것은 내 생각에 눈부신 누락과 같습니다. 변경 사항을 제출하면 주 코드로 되돌릴 수도 있습니다.

+0

그건 나쁜 생각이 아닙니다. 내가 필요한 것을 얻기위한 플러그인이 없다는 것이 밝혀지면 아마도 그 길로 갈 것입니다. 감사! – 64BitBob

0

아니요. hg init을 수동으로 생성 한 후 실행하는 것이 큰 일입니까? 또는 스크립트를 수동으로 호출 할 archetype에 넣는 것은 어떨까요?이 작업은 변경되지 않지만 기본 동작을 정의 할 수 있습니다.

+0

그 자체로 단계가 너무 힘들지 않습니다. 그러나 개발자는 새로운 제품을 설치하고 실행하려면 이러한 아키타 입을 통해 약 5 개의 모듈을 만들어야합니다. 모듈 간에는 책임의 분명한 부분이 있습니다. 이러한 단계의 반복적 특성을 감안할 때 가능한 한 적은 단계를 줄이려고합니다. 더 많은 자동화가 항상 좋은 것입니다. ANT 스크립트를 사용하여 명령 줄을 호출하는 것이 발생했습니다. 그러나, 나는 Maven과 같은 clunky 솔루션을 사용하여 싫어. 나는 더 나은 플러그인 솔루션이있을 수 있기를 바랬다. – 64BitBob

+0

다중 모듈 구조를 만들어 호출 횟수를 줄이는 것이 더 좋은 생각일까요? – khmarbaise

+0

우리는 모듈 당 하나의 메이븐 레포 (모듈) 레포를 사용하는 것을 표준으로 이해했습니다. 따라서 여러분의 제안은 Mercurial 저장소의 수가 아닌 아키 타입 수를 줄입니다. – 64BitBob

0

왜 각 개발자가 hg init을 사용하여 수은 저장소를 만들겠습니까? 필요한 것은 각 개발자가 중앙 hg 저장소를 복제하여 시작할 수 있어야합니다. 이는 scm:bootstrap 또는 scm:checkout과 같은 maven scm plugin 개의 목표를 사용하여 수행 할 수 있습니다.

+0

이 경우 Archetype은 프로젝트의 첫 번째 인스턴스를 생성하는 데 사용됩니다. 이 Archetype이 실행될 때 중앙 체크인은 수행되지 않습니다. 따라서 초기 저장소를 생성하여 중앙 서버에 푸시 할 수 있기를 원합니다. – 64BitBob