2011-02-17 49 views
3

我有一个与<packaging>jar</packaging><version>0.0.11-SNAPSHOT</version> Maven项目。当我运行mvn clean install,它部署以下以我的本地库maven -SNAPSHOT关键字不被替换

〜/ .m2目录/库/ COM /例子/ myproject的/ 0.0.11-快照/共享-0.0.11-SNAPSHOT.jar

我预计产生的工件的名称会-SNAPSHOT换成了JAR建时的时间戳,是这样的:

〜/ .m2目录/库/ COM /例子/ myproject的/ 0.0。 11-SNAPSHOT/Commons-0.0.11-20110217011633.jar

为什么这个替换不会发生?

回答

4

我想你写的东西(代替SNAPSHOT标记)是真的,当你deploy工件到快照库。但install适用于您(至少对我而言),因为它不会替代带有时间戳的SNAPSHOT

5

我重读了这个问题,好像你在谈论你的本地机器。 我怀疑,你可以在本地存储库中唯一版本存储

是指这样的:Repository - SNAPSHOT Handling,它说

是在创建期间安装在本地存储库中的神器,在version.txt文件未更新。这是因为该文件的本地上次修改时间用于确定下一次检查何时发生。

而是使用0.15-SNAPSHOT等格式存储文件。在将来的尝试中,将此文件上的文件系统时间戳与version.txt上的文件系统时间戳进行比较,以确定哪个更新(version.txt的内容更新时只更新其时间戳)。

此外,

这意味着,每一个新的远程快照发布的时候,它会覆盖本地快照不分年龄。这是提供一致行为并避免时钟偏斜的唯一方式 - 例如,如果它比新的远程快照更新,则可以使用本地快照,但可能是本地快照是从较旧的源创建的事实上,年纪较大。


下面的说明是私人仓库。

在私人repositiry:

你需要配置你的本地库来存储独特快照版本。 AFAIK,Artifactory和Nexus有这样的设置。

在这里看到:http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories

您可以选择之间:

  • 非唯一快照。
  • 独特的快照 - 具有唯一的时间戳和内部编号后缀。
  • 部署者尊重行为 - Artifactory将尊重用户快照策略,即充当标准的非智能存储库。

我没有带使用的Nexus,但是好像默认情况下它独特的存储快照,你可以定义你要多少天保留快照。我没有收到文章,但您可能会看到http://www.sonatype.com/books/nexus-book/reference/config-sect-scheduled-services.html

另外,您可以在分布管理区域中明确指出uniqueVersion为true。但是,我想这是默认情况下。可能会给它一个机会,

<distributionManagement> 
    ... 
    <repository>  
    ... 
    <uniqueVersion>true</uniqueVersion> 
    </repository> 
    ... 
</distributionManagement> 
+0

@Don更新回答 – Nishant 2011-02-17 17:59:59