我想這是有點明顯,但我仍然判斷其爲一個缺點...Maven的版本:準備覆蓋SCM性能與解析值
我有23個Maven化項目。我現在添加<scm>位,因爲我已經開始使用發佈插件。這是我的思維過程:
- 我只在我公司基地 POM添加<SCM>部分,並用參數化的特性,例如網址
<scm> <connection>${scmBaseConnection}/${scm.module}/${scm.edition}</connection> <developerConnection>${scmBaseConnection}/${scm.module}/${scm.edition}</developerConnection> <url>${fisheyeBaseUrl}/${scm.module}</url> </scm>
- 然後,每個項目的根(聚合)POM僅需聲明其SCM。
<properties>
因此(而不必重新申報整個<SCM>部分),例如:
<scm.module>sharktopus</scm.module> <scm.edition>trunk</scm.edition>
但我很快意識到,我不能這樣做:發佈插件重寫與標籤和下一個版本的SCM信息,每個POM所以每個這樣的POM需要它自己 <SCM>部分。
精細,所以我決定,我會存儲在基地POM性質的公共SCM的詳細信息,並有每個項目的根POM申報使用這些道具的<SCM>部分,再加上其自身的具體情況,例如:
<scm> <connection>${scmBaseConnection}/sharktopus/trunk</connection> <developerConnection>${scmBaseConnection}/sharktopus/trunk</developerConnection> <url>${fisheyeBaseUrl}/sharktopus</url> </scm>
但是這也不起作用,因爲發佈插件重寫使用已解決的值(事後看來這很明顯)。所以,例如對於釋放標籤 POM,上面的信息會被改寫爲:
<scm> <connection>scm:svn:https://mysvnhost.net/sharktopus/tags/R1_NewStuff</connection> <developerConnection>scm:svn:https://mysvnhost.net/sharktopus/tags/R1_NewStuff</developerConnection> <url>https://mysvnhost.net/sharktopus</url> </scm>
這意味着每個POM必須有它自己的 <SCM>部分與硬編碼的網址。
- 這是每個人都做的嗎?
- 如果您的SCM網址發生變化會發生什麼情況 - 您是否只搜索/替換所有項目?
- 它可能是發佈插件重寫部分URL的功能請求,例如保留屬性引用,但覆蓋「最終」細節?
嗯,是的,我想你是對的... – 2010-09-10 14:38:18