[英]When using maven-release-plugin, why not just detect scm info from local repo?
據我所知,要使用maven-release-plugin,必須將scm部分放入POM文件中。 例如:
<scm>
<connection>scm:hg:ssh://hg@bitbucket.org/my_account/my_project</connection>
<developerConnection>scm:hg:ssh://hg@bitbucket.org/my_account/my_project</developerConnection>
<url>ssh://hg@bitbucket.org/my_account/my_project</url>
<tag>HEAD</tag>
</scm>
我了解此數據用於確定要標記什么以及將更改推向何處。 但是,如果您已克隆/檢出代碼,此信息是否不可用? 我在概念上有些掙扎,我需要告訴Maven什么時候需要標記什么代碼,至少從理論上講,只需詢問Git / HG / SVN / CVS它正在處理什么代碼。 我懷疑我在細節中遺漏了一些東西,但是我不確定。 是否可以更改maven-release-plugin代碼以將其刪除,或者至少將自動檢測設置為默認值? 如果不能,有人可以提供一些有關為什么這樣行不通的背景信息嗎?
一方面,GIT和Subversion可以具有用於讀寫和只讀訪問的不同SCM URI。
這就是不同的<connection>
和<developerConnection>
URI應該捕獲的。 第一個是保證讀取訪問的URI。 第二個是保證寫訪問的URI。
通常,從已檢出的存儲庫中無法推斷出規范的URI。
例如,我可能會通過svn:
協議和服務器的IP地址在內部檢出Subversion存儲庫,但是外部貢獻者將需要使用https://
和主機名。
甚至使用GIT存儲庫,在Github上,您都有用於不同訪問機制的不同URI,例如
https://github.com/stephenc/eaio-uuid.git
(使用用戶名/密碼或OAuth進行讀寫) git@github.com:stephenc/eaio-uuid.git
(使用SSH私鑰標識進行讀寫) git://github.com/stephenc/eaio-uuid.git
(匿名只讀) 沒關系,您可能已經簽出了git://github.com/zznate/eaio-uuid.git
或克隆了本地簽出,換句話說,您本地的git存儲庫可能會使“上游”為../eaio-uuid-from-nate
而不是git@github.com:stephenc/eaio-uuid.git
我同意,對於某些SCM工具,您可以自動檢測...例如,如果您知道從AccuRev中檢出了源,則應該假設其詳細信息是可以的...直到點擊Subversion或GIT或CVS或其他代碼模塊檢出到AccuRev工作區(真實情況),以便可以更新引入的標簽。
簡而言之,必須確定檢測代碼,以確保您沒有同時使用兩個SCM系統,以確保哪個是主SCM ...而另一個SCM甚至可能沒有將標記文件留在磁盤上嗅出(例如,AccuRev不會,因此我選擇了它)
唯一安全的方法是要求pom至少定義SCM系統,並且對於無法可靠推斷URI的那些SCM系統(認為CVS,Subversion,GIT,HG,實際上其中的大多數)都要求URI進行定義被指定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.