2017-09-29 6 views
0

멀티 모듈 프로젝트의 모든 폼에서 artifactId를 추출해야합니다.셸 스크립트를 사용하여 멀티 모듈 프로젝트에서 사용하는 모든 pom.xml 파일에서 artifactId를 추출하는 방법은 무엇입니까?

프로젝트 구조는 비슷하지만 구조 (IT 프로젝트의 의존 것) 다를 수 있습니다 :

project 
|------->pom.xml 
|------->subproject1 
      |------->pom.xml 
      |------->folder1 
         |------->pom.xml     
|------->subproject2 
      |------->pom.xml 
      |------->folder2 
         |------->pom.xml       
|------->subproject3 
      |------->pom.xml 
      |------->folder3 
         |------->pom.xml       
|------->subproject4 
      |------->pom.xml 
      |------->folder4 
         |------->pom.xml 
|------->subproject5 
      |------->pom.xml 
      |------->folder5 
         |------->pom.xml 

내가 추출물에 대한 단일 모듈 프로젝트에서 정보를 원하시면,이 명령을 사용하고 있습니다 :

MVN_ARTIFACTID=$(mvn -q \ 
-Dexec.executable="echo" \ 
-Dexec.args='${project.artifactId}' \ 
--non-recursive \ 
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec) 

그런 다음이 변수를 Bamboo Plan의 다른 작업에 사용합니다.

어떻게 멀티 모듈 프로젝트에서 비슷한 작업을 수행 할 수 있습니까? 변수의 모든 poms의 artifactId를 추출해야합니다.

은이 게시물에 대해 알고 있지만이 같은 문제가 아니에요 : How to extract the GAV from a pom.xml file in a shell script

감사합니다. 두 번째 줄은 더 읽을 수있는 형식으로 artifactId를 이름을 부여 할 수 있도록

MVN_ARTIFACTID=$(mvn -q -Dexec.executable="echo" -Dexec.args='${project.artifactId} ##' org.codehaus.mojo:exec-maven-plugin:1.3.1:exec) 
echo $MVN_ARTIFACTID| sed 's/##/\n/g' 

추가 ## 작은 해킹 등 :

+0

질문 : 왜 필요합니까? 다중 모듈 빌드를 사용하는 경우 모든 버전이 동일해야합니다. – khmarbaise

+0

죄송합니다. 글을 편집했습니다. 나는 artifactId (버전과 groupId는 모든 모듈에서 동일 함) 만 필요합니다. Artifactory (Bamboo 사용)에서 repo의 archetype-catalog.xml을 업데이트해야하기 때문에 모든 poms의 artifactId가 필요합니다. –

답변

1

그냥 비 재귀 옵션을 제거하십시오. 그렇지 않으면 모든 모듈이 같은 줄에 에코됩니다.

Module-1 
Module-2 
Module-3 
+0

감사! 지금 일하고있다! –