【问题标题】:Maven 3.3.1 - Disable timestampsMaven 3.3.1 - 禁用时间戳
【发布时间】:2016-01-22 17:39:34
【问题描述】:

我读到<unique> 版本设置不再执行,并且在 Maven 3 或更高版本中被忽略,如下所述:Non-unique Versions。根据设计,Maven 3 或更高版本将始终生成带有时间戳的 SNAPSHOT 版本。

但是,当我构建工件时,我有一些仅生成基本 SNAPSHOT 版本的工件,即使我多次构建它,也有。

构建一些工件后,在我的本地存储库中将有我构建的基本工件-SNAPSHOT 文件,以及同一工件的其他几个时间戳版本。有基本工件:artifactID-4.0.1.0-SNAPSHOT.jar,然后在同一目录中还有其他附加版本:例如artifact-4.0.1.0-SNAPSHOT-20160120.192041-37.jar。

我不希望构建时间戳文件并将其放入我的存储库,因为它只会占用磁盘空间。我想弄清楚如何只生成基本的 4.0.1.0-SNAPSHOT 版本,仅此而已。

除了编写脚本来删除这些累积的时间戳工件之外,有没有人想出一种方法来完全禁用它们,这样它们就不会在 Maven 3 或更高版本中创建?

【问题讨论】:

  • 带时间戳的工件是什么意思?提交到本地存储库的行为?构建后创建的文件名?
  • 只有SNAPSHOT版本会有时间戳。你能确认这就是区别吗?
  • 你在哪里可以找到那些带有时间戳的工件?只有在像 Nexus / Artifacts 这样的存储库管理器中才会创建此类工件,并且 Nexus 中存在定期清理 SNAPSHOT 存储库的计划任务...?
  • @Tunaki - 是的,它仅适用于 SNAPSHOT 版本。我是否可以每次都覆盖 4.0.1.0-SNAPSHOT,这样就永远不会创建任何时间戳版本。
  • @JFPicard - 是的,我指的是在构建存储库中已经存在的工件时在 4.0.1.0-SNAPSHOT 目录中生成的时间戳工件。

标签: java maven timestamp version pom.xml


【解决方案1】:

参考另一个问卷页面:

https://stackoverflow.com/questions/57951722/how-to-remove-timestamp-from-artifacts-uploaded-to-maven2-repository-on-nexus

您要求做的是更改 Maven/Nexus 的默认行为。它根据附加的时间戳和序号跟踪什么是“最新的”。您只需要指定“SNAPSHOT”,它将解决最新的问题(警告:默认情况下仅检查来自远程的本地更新@daily,除非指定 -U。如果您想清除远程(Nexus)存储库,您可以安排一个任务到“从存储库中删除快照”。您可以安排每小时或更长时间(通过 Advanced / cron)。它需要时间戳和顺序 # 才能知道要返回多远才能删除额外的副本(按时间或数量)

其他明智的尝试使用 uniqueVersion=false maven unique version artifact

mvn deploy:deploy-file -Durl=file:///C:/m2-repo \
                       -DrepositoryId=some.id \
                       -Dfile=your-artifact-1.0.jar \
                       -DpomFile=your-pom.xml \
                       -DuniqueVersion=false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2013-11-25
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多