2012-03-06 63 views
0

我們在單個SVN存儲庫中有一堆較小的項目。該存儲庫具有以下結構:使用maven版本的分層標籤結構

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

因此,它看起來有點像一個Maven存儲庫。

現在我想讓maven release插件在標記時創建一個類似的結構。我改變了插件的配置:

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

Maven的版本插件將創建正確的SVN網址:https://repo/tags/groupId/artifactId3/1.0.0

但是道路結構還沒有在資源庫中存在,因此SVN「標籤」操作失敗。

我不想在每次將新工件添加到需要標籤支持的SVN倉庫時創建路徑結構。有沒有一種方法可以配置maven來在標記之前先創建父結構?或者我需要爲maven創建一個插件嗎?

+1

不在svn中創建默認TTB文件夾結構的原因是什麼? – khmarbaise 2012-03-14 19:15:54

+0

@khmarbaise因爲當你有很多工件和常規版本時它會造成一團糟。 – elmuerte 2012-03-19 13:20:01

+1

如果它造成一團糟,請將標籤/檔案中較舊的標籤移動,即使它顯然不是更好的解決方案(scom鏈接到您的pom不會跟隨您的移動) – 2012-06-12 11:57:13

回答

0

問題在於這只是導致標記文件夾不包含groupId和artifactid文件夾。您需要使用發行版插件的配置來設置tagBase。這可以在你的super-pom的插件管理部分完成。

0

我已經面臨這樣的問題,但我不會給你一個直接的答案來解決你的問題。事實上,你嘗試做一些事情究竟是不是在「Maven的方式」 ......

對於我明白了,你試着標籤:

  • 只是一個假象,把它變成的groupId/artifactId的/版本
  • 或所有回購(例如全部在主幹下)。

標記一個神器

在僅標註artifact3的情況下,你是對的。第一次嘗試標記時,你無法做到這一點,因爲不能在一個命令中創建完整的結構(svn標記確實是一個副本,而複製命令不支持允許複製和創建目錄的選項,如「 (默認行爲)是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> 

你也可以修改tagBase,如khmarbaise說,tagBase和tagFormat(覆蓋默認行爲)的混合 我從來沒有嘗試過,但它應該起作用。請注意,版本使用@而不是$(在提交期間或之前不得更換,但在taggin操作期間稍後使用)。

顯然,您將不得不以這種方式爲每個要標記的工件創建合適的結構。但你只需要做一次。

所有標籤的文物

如果你想標記在一個時間所有的文物,這將是困難得多。 我不知道這是你想要的東西,所以我會簡短,只給出了一些線索:

  • 如果你的部件鏈接在一起,就設想建立一個多模塊項目(和運行mvn放開就可以了),與嵌套在所有模塊(這是正確的方式)
  • ,如果他們都沒有,你就不必在一起標籤; d

如果我錯了你的意圖,不要猶豫,回答我,提供更多信息。

祝你好運:)

1

當你發現嵌套的標籤和分支機構不在路徑 - 使用任何工具,會和他們一起玩以及開箱即用。

聽起來像ArtifactID1-4是獨立的svn項目,它們不是一起構建和發佈的。也許他們應該都是svn中的一個項目,並帶有自己的分支標籤和中繼文件夾。你會避免你提到的混亂以及嵌套分支&標籤的混亂。