2013-10-05 107 views
1

Artifact接口提供getBaseVersion(),除了getVersion()。基礎版本被設置在setBaseVersionInternal(String),如下所示:使用案例Artifact.getBaseVersion()

Matcher m = VERSION_FILE_PATTERN.matcher(baseVersion); 

if (m.matches()) 
{ 
    this.baseVersion = m.group(1) + "-" + SNAPSHOT_VERSION; 
} 
else 
{ 
    this.baseVersion = baseVersion; 
} 

我無能相對於兩個不同的版本字符串的語義。 getBaseVersion()的返回值是什麼時候與getVersion()實際不同,爲什麼?

回答

1

有兩種類型的SNAPSHOT:獨特和非獨特。後者以-SNAPSHOT結尾,當您在自己的系統上使用項目時會生成這些結果。 A mvn install將使用-SNAPSHOT版本將工件複製到本地存儲庫。

如果您使用遠程存儲庫中的SNAPSHOTs,那麼這些工件將加上時間戳(以人類友好的時間戳表示結束),這使得它們是唯一的。這與他們上傳到遠程存儲庫的方式有關。

+0

謝謝,但..爲什麼'getBaseVersion()'?我想'getVersion()'可能是一個「uniquified」版本,包括時間戳,而'getBaseVersion()'總是返回POM中發現的版本字符串? – wau

+1

在討論maven-plugins時,它只是取決於他們需要的東西。大多數插件對其獨特的價值不感興趣,但是如果它是SNAPSHOT或不是。在這種情況下,你應該使用'getBaseVersion()'。當提到實際的文件時,你可能需要'getVersion()'。一個例子:請看http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html它應該尊重時間戳嗎?可能不會,你只是想知道它是否是相同的SNAPSHOT。 –