仔细看了看
让我感到困惑的是,maven 正在搜索这个文件的 repo,但没有找到它。我不明白为什么不同的本地存储库(POM 文件中列出的 6 个存储库之一)应该是个问题。
我的假设是问题出在正在发布的存储库的版本策略中。这肯定是错误所暗示的,但旧存储库也有发布策略,无论如何我没有将快照存储在那里只是在寻找它,因为它是存储在 Maven Central 上的依赖项的依赖项不是找到了。
有没有办法可以更改策略以允许在其中搜索快照或阻止 Maven 在该存储库中搜索快照?
我们已将内部存储库从服务器上移至另一个服务器,并将其从 2.14.9-01 升级到 3.12.1-01。
我们已经使用代理迁移了 Artifact 。我使用新的 repo 构建了几个简单的项目,一切看起来都很好。
但是在一个应用程序上我收到了这个错误
[INFO] ------------------------------------------------------------------------
Downloading: http://reposerver:8081/repository/releases/org/glassfish/javax.el/3.0.1-b06-SNAPSHOT/javax.el-3.0.1-b06-SNAPSHOT.pom
Downloading: http://reposerver:8081/repository/releases/org/glassfish/javax.el/3.0.1-b07-SNAPSHOT/javax.el-3.0.1-b07-SNAPSHOT.pom
Downloading: http://reposerver:8081/repository/releases/org/glassfish/javax.el/3.0.1-b08-SNAPSHOT/javax.el-3.0.1-b08-SNAPSHOT.pom
...
[INFO] -----------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project :
Could not resolve dependencies for project :
Failed to collect dependencies at org.eclipse.jetty:jetty-
jsp:jar:9.2.19.v20160908 -> org.glassfish.web:javax.servlet.jsp:jar:2.3.2 ->
org.glassfish:javax.el:jar:3.0.1-b06-SNAPSHOT:
Failed to read artifact descriptor for org.glassfish:javax.el:jar:3.0.1-b06-SNAPSHOT:
Could not transfer artifact org.glassfish:javax.el:pom:3.0.1-b06-SNAPSHOT from/to releases.new
(http://reposerver:8081/repository/releases/): Failed to transfer file:
http://reposerver:8081/repository/releases/org/glassfish/javax.el/3.0.1-b06-SNAPSHOT/javax.el-3.0.1-b06-SNAPSHOT.pom.
Return code is: 400 , ReasonPhrase:Repository version policy: RELEASE does
not allow version: 3.0.1-b06-SNAPSHOT. -> [Help 1]
如果我回到旧的 repo 协议(protocol),我一点问题都没有。我快速尝试更改码头版本并排除 javax.el 以避免使用快照依赖项并构建项目,但我似乎无法在不导致灾难性构建失败的情况下轻松执行此操作。
再次检查我在使用旧存储库时错过了这个持续警告
[WARNING] The POM for org.glassfish:javax.el:jar:3.0.1-b06-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for org.glassfish:javax.el:jar:3.0.1-b07-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for org.glassfish:javax.el:jar:3.0.1-b08-SNAPSHOT is missing, no dependency information available
我已经尝试添加这个似乎有快照的 repo 协议(protocol)
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
但这没有什么区别。
据我所知,maven 正在尝试所有 repos 以递归地查找所有依赖项,因为我的本地 repo 是最后一个,它在检查我的本地 repo 后报告错误。关于快照策略的错误是一条错误消息,问题是它无法找到 javax-el jar 的 POM,因此无法继续寻找依赖项。我不明白为什么它在查看一个 repo 协议(protocol)后忽略,而在指示它查看另一个 repo 协议(protocol)时却失败了?
在我看来,成功与失败之间的唯一区别是
成功:
<repository>
<id>releases</id>
<name>App Repository</name>
<url>http://oldserver:8081/repository/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>snapshots</id>
<name>App Repository</name>
<url>http://newserver:8081/repository/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
失败
<repository>
<id>releases</id>
<name>App Repository</name>
<url>http://newserver:8081/repository/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>snapshots</id>
<name>App Repository</name>
<url>http://newserver:8081/repository/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
这是新 Nexus 存储库上的设置吗?目前我希望有一个简单的 like for like fix,但如果你认为我需要更改我正在调用的依赖项,那很好
Jetty 依赖调用
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>9.0.6.v20130930</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jstl</artifactId>
<version>9.2.19.v20160908</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>9.2.19.v20160908</version>
</dependency>
最佳答案
好吧,我还没有找到为什么 Nexus 的版本似乎表现不同的答案(这是我对根本原因的误解!)
我已经用一个简单的 pom mod 修复了它(我想我以前试过,但我一定是绕了一些愚蠢的圈子)
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>9.2.19.v20160908</version>
<exclusions>
<exclusion>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/javax.el -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
关于maven - 存储库版本策略 : ignore missing poms?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51403167/