2014-06-25 5 views
2

mvn archetype을 실행하는 방법이 있습니까? artifactId에서 디렉토리를 생성하는 대신 현재 디렉토리를 생성하고 대상을 지정 하시겠습니까? 플러그인은 basedir 매개 변수를 사용하지만 "-Dbasedir ="을 전달합니다. 트릭을하지 않습니다.Maven Archetype 사용 동일한 디렉토리에서 생성

추가 컨텍스트를 위해 2 개의 저장소 저장소를 설정했습니다. 첫번째는 커스텀 웹 서비스를 생성하기위한 Maven 아키 타입의 소스를 포함하고, 두 번째는 아키 타입에서 생성 된 샘플 서비스이다. 나는 기본적으로 "mvn clean install"을 실행하여 내 아키타 입을 만드는 Jenkins 작업을 가지고 있습니다. 우리 CI 워크 플로우의 일부로 두 번째 Jenkins 작업을 설정하려고합니다. "mvn archetype : generate"를 사용하여 테스트 서비스를 생성하고, mvn 클린 설치로 서비스를 빌드하고, 서비스를 회전시키고, 일부 통합 테스트를 실행 한 다음 테스트가 통과되면 테스트 서비스를위한 소스가 두 번째 저장소로 이동합니다. Jenkins의 두 작업 모두 Maven 2/3 빌드 job type을 사용하며 작업 구성의 SCM 섹션에 Git repo 정보를 지정했기 때문에 작업은 "git clone"을 수행하기 시작합니다. 두 번째 작업을 위해

, 내 현재의 흐름은 다음과 같습니다

// Clean out the existing source and commit locally. 
git rm -r . 
git commit -m "Cleaning out previous version." . 

// Generate the new source from the archetype. 
mvn archetype:generate ... 

// Big hack that I'd like to remove. 
mv <artifactId>/* . 
rm -rf <artifactId> 

// Add the new generated source and commit locally. 
git add -A . 
git commit -m "Committing new version." . 

// Build and test. 
mvn integration-test 

// Assuming that passed, commit the changes. 
git push origin master 

해킹 내가 대신 중첩 된 디렉토리를 만드는 내 현재 디렉토리를 사용하는 아키 타입 플러그인을 이야기하는 방법을 잘 모르겠어요 때문이 artifactId의 이름으로 모든 것을 로컬 저장소 루트 디렉토리로 옮기고 생성 된 디렉토리를 삭제해야합니다. 세상 끝은 아니지만 추한 느낌. 초기 질문에 대한 답변 외에도 전반적인 목표를 달성하는 방법에 대한 제안을 할 수 있습니다. :) 미리 감사드립니다!

답변

1

나는 세 가지 아이디어를 가지고 :

  1. 당신은 basedir에 대한 절대 경로를 사용하려고 할 수 있지만 나는 그것이 pom.xml 파일을 볼 때 속성이 Maven을 덮어 생각합니다.

  2. mvn archetype:generate을 실행하기 전에 스크립트와 pushd ..을 사용하여 상위 폴더로 변경하십시오. popd을 보내드립니다.

  3. maven 모듈 빌드를 사용하십시오. 그런 식으로, 당신은 원형을 구축 루트 POM이 있고 프로젝트의 내부 모듈을 생성하는 mvn archetype:generate을 실행할 수 있습니다 응답에 대한

    demo-project/ 
        pom.xml 
        archetype/ 
         pom.xml 
    
+0

감사합니다! 나는 # 1을 테스트했지만 작동하지 않는 것 (또는 내가 잘못한 것을하고있다)이다. # 2는 작동하지만 chroot jailed 빌드 환경에서 실행 중이므로 한 단계 올라갈 수 없기 때문에 필자의 경우 옵션이 아닙니다. 나는 완전히 # 3을 괴롭힌다는 확신이 없지만, 아키타 입방체를 구축하고 별도의 젠킨스 (Jenkins) 작업에서 실행되는 아키타 입을 가진 서비스를 생성 한 이후로 나에게 옵션이라고 생각하지 않는다. – Tyson

+0

"서비스 생성 중"프로젝트를 다중 모듈 빌드로 변환하십시오. –