存储库版本策略:忽略缺少的pom?

时间:2018-07-18 13:23:46

标签: maven nexus

看了我更多的认识

让我感到困惑的是,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>

1 个答案:

答案 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>