2012-03-06 5 views
0

우리는 하나의 SVN 저장소에 더 작은 프로젝트를 가지고 있습니다. 저장소는 다음과 같은 구조를 가지고 있습니다 :Maven 릴리스를 사용한 계층 적 태그 구조

/trunk 
    /artifactId1 
    /artifactId2 
    /groupId 
     /artifactId3 
     /artifactId4 
/branches 
    ... see above 
/tags 

그래서 이것은 maven 저장소와 비슷합니다.

이제 maven release plugin이 태깅 할 때 유사한 구조를 만들길 원합니다.

<tagNameFormat>@{project.groupId}/@{project.artifactId}/@{project.version}</tagNameFormat> 

올바른 SVN URL이 생성됩니다 받는다는 릴리스 플러그인 : https://repo/tags/groupId/artifactId3/1.0.0

그러나 경로 구조가 저장소에 아직 존재하지 않는이는 SVN "태그"작업이 실패 그래서 나는에 플러그인 구성을 변경 .

태그 지원이 필요한 SVN 저장소에 새 이슈가 추가 될 때마다 경로 구조를 생성하고 싶지 않습니다. 태깅하기 전에 먼저 부모 구조를 생성하도록 maven을 구성하는 방법이 있습니까? 또는 이렇게하는 maven 용 플러그인을 만들어야합니까?

+1

svn에서 기본 TTB 폴더 구조를 만들지 않은 이유는 무엇입니까? – khmarbaise

+0

@khmarbaise 왜냐하면 많은 유물과 정규 릴리스가있을 때 엉망이되기 때문입니다. – elmuerte

+1

엉망이 생기면 이전 태그를 tags/archive로 옮깁니다. 분명히 더 나은 해결책이 아니더라도 (scm 링크는 이동을 따라 가지 않습니다) –

답변

0

문제는 태그 폴더에 groupId 및 artifactid 폴더가 포함되어 있지 않기 때문입니다. 릴리스 플러그인의 구성으로 tagBase을 설정해야합니다. 이 작업은 수퍼 폴 (super-pom)의 pluginManagement 섹션에서 수행 할 수 있습니다.

0

저는 이미 이런 종류의 문제에 직면 해 있었지만 문제 해결을위한 솔직한 대답은하지 않겠습니다. 의 groupId/artifactId를 /로 퍼팅,

  • 한 유물 : 사실, 당신은 내가 이해를 위해 "받는다는 방법"에없는 어떤 것을 ...

    을하려고하면 태그를하려고 버전

  • 또는 모든 repo (예 : all under trunk).

만 artifact3 태그의 경우 하나 개의 유물

을 태그, 당신 말이 맞아. 처음으로 태그를 만들려고 할 때, 한 명령에서 전체 구조를 만들 수 없으므로 (svn 태그는 실제로 사본입니다.) 복사 명령은 복사를 허용하는 옵션을 지원하지 않으며 " mkdir -p "리눅스에서

그러나 Maven 규칙 (기본 동작)은 tags/artifactId-version입니다. IDE 나 svn 명령 줄을 통해 이전에 릴리스를 수행하기 위해 사용자 고유의 구조와 템플릿을 만들 수 있습니다. . 그런 다음, 당신이 원하는대로 tagNameFormat을 변경 (당신이 보인다 할).

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     [...] 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.3.1</version> 
     <configuration> 
      <tagNameFormat>${groupId}/${artifactId}/@{project.version}</tagNameFormat> 
     </configuration> 
     </plugin> 
     [...] 
    </plugins> 
    [...] 
    </build> 
    [...] 
</project> 

khmarbaise 말했듯이 또한 tagBase 및 사항 tagformat (기본 동작을 재정의합니다)의 혼합으로, tagBase을 수정할 수 나는 그것을 해보지 않았지만 효과가있다. 버전은 $가 아닌 @를 사용합니다 (커밋 도중 또는 이전에는 바꿔서는 안되지만 나중에 태그 작업 중에 사용하십시오).

분명히, 당신은이 방법으로 태그를 붙이고 싶은 각각의 이슈에 적합한 구조를 만들어야 할 것입니다. 그러나 당신은 한 번만해야 할 것입니다.모든 이슈

한 번에 모든 이슈를 태그하려면에 태그를

이 훨씬 더 어려울 것이다. 나는 이것이 당신이 원하는 것입니다 확실하지 않다, 그래서 난 단지 몇 가지 단서주는 간단한 수 있습니다 : 당신의 구성 요소가 서로 연결되어 있다면 바로 멀티 모듈 프로젝트를 빌드 할 직시,

  • 을 (및 MVN을 실행 , D
  • 내가 당신의 의도에 틀리지 경우

(이 올바른 방법입니다) 그렇지 않은 경우
  • , 당신은 함께 태그를하지 않았을에 중첩 된 모든 모듈,) 그 일에 출시 더 많은 정보를 주면서 나에게 대답하는 것을 망설이지 마라.

    행운을 빕니다 :)

  • 1

    중첩 된 태그와 지점을 찾고 있습니다로 경로 아니다 - 어떤 도구가 상자 밖으로 그들과 함께 잘 연극을하려고하지 않습니다.

    ArtifactID1-4처럼 소리가 나지 않는데, 별도의 svn 프로젝트입니다.이 프로젝트는 함께 빌드 및 릴리스되지 않습니다. 아마도 그들은 각각 자신의 분기 태그 및 트렁크 폴더와 함께 svn 프로젝트해야합니다. 당신은 네 엉덩이 & 태그의 혼란뿐만 아니라 당신이 언급 엉망을 피할거야.