看了我更多的认识
让我感到困惑的是,Maven正在为该文件搜索存储库而没有找到它。我不明白为什么应该有其他本地存储库(POM文件中列出的6个存储库之一)的问题。
我的假设是问题出在要发布的存储库的版本策略中。这肯定是错误所隐含的含义,但是旧的存储库也有释放策略,无论如何我没有在其中存储快照,只是在寻找它,因为它是存储在Maven Central上的依赖项的依赖项找到。
是否可以更改策略以允许对其进行快照搜索,或者阻止Maven在此存储库中搜索快照?
我们已将内部存储库从服务器上移至另一个存储库,并将其从2.14.9-01升级到3.12.1-01。
我们已经使用代理迁移了工件。我使用新的回购协议构建了几个简单的项目,一切似乎都很好。
但是在一个应用程序上我遇到此错误
[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]
如果我回到旧的仓库,我一点都没有问题。我可以快速尝试更改码头版本并排除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
我尝试添加了这个似乎有快照的仓库
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
但这没什么区别。
据我所知,maven尝试使用所有存储库以递归方式查找所有依赖项,并且由于我的本地存储库是最后一个,它在检查本地存储库后报告错误。有关快照策略的错误是一条错误消息,问题是它找不到javax-el jar的POM,因此无法继续查找依赖项。我不明白为什么它在查看一个回购后就忽略,而在指示要查看另一个回购时却失败了?
成功与失败之间的唯一区别是
成功:
<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存储库上的设置吗?目前,我希望可以通过简单的方式进行类似修复,但是如果您认为我需要更改要调用的依赖项,那就可以了
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>
答案 0 :(得分:0)
好吧,我还没有找到答案来解释为什么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>