繁体   English   中英

Maven 无法解析正确的 SNAPSHOT 依赖项

[英]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>

证明:

没有 war 插件的 WEB-INF/lib:

带有war 插件的 WEB-INF/lib:

Maven 将当前日期附加到快照以比较本地存储库中的快照版本和远程存储库中的快照版本,并评估是否需要下载远程 jar,因为今天下载 0.0.1-SNAPSHOT 可能会提供与昨天下载不同的文件或者明天。

如果您在本地构建一个快照,它只是使用名称0.0.1-SNAPSHOT构建。 如果你将它部署到 Artifactory,它会得到一个内部时间戳版本号,就像你提到的那样。

当您再次下载时,Artifactory 会为您提供最新的时间戳。

所以在本地,你有时有一个-SNAPSHOT版本,有时有一个时间戳版本。 我不清楚战争中的工件如何命名的确切规则,但是无论您是否有时间戳版本,都应该没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM