[英]Maven does not resolve correct SNAPSHOT dependencies
我會很快的。 我的 Maven 版本是 3.5.0。 我在我的 Web 應用程序中使用了一些庫。 這些庫單獨安裝並部署在工件實例中。
我有以下 pom(部分):
<project>
....
<properties>
<process.domain.common.version>0.0.1-SNAPSHOT</process.domain.common.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.intersoft</groupId>
<artifactId>process.domain.common</artifactId>
<version>${process.domain.common.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.intersoft</groupId>
<artifactId>process.domain.common</artifactId>
</dependency>
</dependencies>
</project>
但在庫中,Maven 把這個庫:
process.domain.common-0.0.1-20190319.151024-3.jar
而不是這個:
process.domain.common-0.0.1-SNAPSHOT.jar
我的依賴項是從 artifactory 解決的。 為什么 Maven 將這個臨時庫放在時間戳名稱而不是 SNAPSHOT? 此行為不會在所有已解析的庫中發生。
最后,我找到了解決方案。
解決方法是在war項目的pom.xml中添加maven war插件:
<properties>
<version.war.plugin>2.5</version.war.plugin>
</properties>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${version.war.plugin}</version>
<configuration>
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
</plugins>
</build>
證明:
Maven 將當前日期附加到快照以比較本地存儲庫中的快照版本和遠程存儲庫中的快照版本,並評估是否需要下載遠程 jar,因為今天下載 0.0.1-SNAPSHOT 可能會提供與昨天下載不同的文件或者明天。
如果您在本地構建一個快照,它只是使用名稱0.0.1-SNAPSHOT
構建。 如果你將它部署到 Artifactory,它會得到一個內部時間戳版本號,就像你提到的那樣。
當您再次下載時,Artifactory 會為您提供最新的時間戳。
所以在本地,你有時有一個-SNAPSHOT
版本,有時有一個時間戳版本。 我不清楚戰爭中的工件如何命名的確切規則,但是無論您是否有時間戳版本,都應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.