我正在使用artifactory来提供jar文件。我有scala
和SBT
的项目。SBT无法解析最新的快照。它总是在解析第二个版本。我的意思是,如果我从artifactory
中清除特定的jar文件,我需要构建两次。只有到那时,问题才会得到解决。
清除罐子,在第一次构建之后,这些都是虚假事实:
- 1.2-SNAPSHOT
- frameworks_2.11-1.2-20150221.064040-1-javadoc.jar
- frameworks_2.11-1.2-20150221.064040-1-sources.jar
- frameworks_2.11-1.2-20150221.064040-1.pom
- frameworks_2.11-1.2-20150221.064040-2.jar
- maven-metadata.xml
- maven-metadata.xml
即使罐子存在,在我的本地项目中也没有得到解决。在再次构建框架jar之后,这里是artifactory列表。
- 1.2-SNAPSHOT
- frameworks_2.11-1.2-20150221.064040-1-javadoc.jar
- frameworks_2.11-1.2-20150221.064040-1-sources.jar
- frameworks_2.11-1.2-20150221.064040-1.pom
- frameworks_2.11-1.2-20150221.064040-2-javadoc.jar
- frameworks_2.11-1.2-20150221.064040-2-sources.jar
- frameworks_2.11-1.2-20150221.064040-2.jar
- frameworks_2.11-1.2-20150221.064040-2.pom
- frameworks_2.11-1.2-20150221.064040-3.jar
- maven-metadata.xml
- maven-metadata.xml
在这之后,问题正在得到解决。现在,即使在构建jar时进行了一些更改,它也总是仅从中解决。任何新的变化都不会得到反映。
有人能告诉我如何解决这个问题吗?因此,我需要始终清除artifactory并构建两次jar。
问题在于为jar工件计算的唯一快照版本。当其他工件的版本为2.11-1.2-20150221.064040-1
时,jar工件有一个不同的版本——2.11-1.2-20150221.064040-2
这种情况的根本原因在于,当存储库Maven Snapshot Version behavior配置为唯一快照时,Artifactory行为与SBT部署工件的方式相结合。请参阅这个stackoverflow问题的答案,以获得对该问题的良好解释
如果你想使用唯一的快照,你可以:
1) 应用Artifactory邮件列表中描述的解决方案(基于提到的stackoverflow问题/答案)
为了传递build.timestamp
矩阵参数,您需要以以下方式定义存储库:
publishTo := Some("Artifactory Realm" at "http://localhost:8081/artifactory/libs-snapshot-local;build.timestamp=" + new java.util.Date().getTime)
2) 请尝试使用sbt唯一版本。在这种情况下,您需要将Maven Snapshot Version Behavior更改为"Deployer"。