1

我正在尝试将我的公司从 maven2 升级到 maven3,一个阻塞器是一种奇怪的现象,当我激活某个配置文件时,maven reactor 开始搜索大量旧的依赖信息(10 多分钟直到内存耗尽)。

如果存在具有范围的依赖项(例如“[3.0,)”),我已经看到了这种行为,但我很确定我已经清除了所有这些。

使用 mvn dependency:tree 和 mvn help:effective-pom 不会告诉我是否有任何范围依赖,并且在 pom.xml 文件中对[, ], ()的 grepping 没有任何结果,所以我有点难过关于下一步戳哪里的那一刻。

例如,在我的 pom 中,我有这个配置文件激活部分:

   <profile>
       <id>demo</id>
       <activation>
           <property>
               <name>client</name>
               <value>demo</value>
           </property>
       </activation>
       <dependencies>
           <dependency>
               <groupId>com.mycompany</groupId>
               <artifactId>client-demo</artifactId>
               <version>3.32.0-SNAPSHOT</version>
           </dependency>
       </dependencies>
   </profile>

然后当我在命令行上运行它时:

mvn -Dclient=演示码头:运行

输出是对我的客户端演示工件的每个历史快照的成千上万次 pom 数据搜索:

    ....snip.....
    Downloading:https://nexus.mycompany.com/nexus/content/groups/public/com/mycompany/client-demo/2.16.7-SNAPSHOT/client-demo-2.16.7-SNAPSHOT.pom 
    [WARNING] The POM for com.mycompany:client-demo:jar:2.16.7-SNAPSHOT is missing, no dependency information available 
    Downloading: https://nexus.mycompany.com/nexus/content/groups/public/com/mycompany/client-demo/2.16.8-SNAPSHOT/maven-metadata.xml 
    Downloading: https://nexus.mycompany.com/nexus/content/groups/public/com/mycompany/client-demo/2.16.8-SNAPSHOT/client-demo-2.16.8-SNAPSHOT.pom 
    [WARNING] The POM for com.mycompany:client-demo:jar:2.16.8-SNAPSHOT is missing, no dependency information available 
    Downloading: https://nexus.mycompany.com/nexus/content/groups/public/com/mycompany/client-demo/2.16.9-SNAPSHOT/maven-metadata.xml 
    Downloading: https://nexus.mycompany.com/nexus/content/groups/public/com/mycompany/client-demo/2.16.9-SNAPSHOT/client-demo-2.16.9-SNAPSHOT.pom 
    [WARNING] The POM for com.mycompany:client-demo:jar:2.16.9-SNAPSHOT is missing, no dependency information available 
    Downloading: https://nexus.mycompany.com/nexus/content/groups/public/com/mycompany/client-demo/2.16.10-SNAPSHOT/maven-metadata.xml 
    Downloading: https://nexus.mycompany.com/nexus/content/groups/public/com/mycompany/client-demo/2.16.10-SNAPSHOT/client-demo-2.16.10-SNAPSHOT.pom
    ....snip.....

编辑:: 更多信息。

此问题似乎纯粹与通过配置文件激活包含附加依赖项有关,而不与依赖项本身有关。例如,如果我摆脱配置文件并直接依赖 com.mycompany.client-demo-3.32.0-SNAPSHOT,则不会出现不良行为。所以这与反应堆处理配置文件激活依赖项的方式有关......我认为

4

1 回答 1

1

在你的情况下,我会尝试一些事情,比如help:effective-pom,看看是否有什么让我感到惊讶的事情。此外,mvn -X -Dclient=demo clean install然后查看日志以查看是否可以找出不良行为的来源。

我唯一的另一个想法是,某处可能存在循环依赖... client-demo:X-SHAPSHOT 取决于 other-lib:Y-SNAPSHOT,取决于 client-demo:(X-1)-SNAPSHOT ...但是我怀疑在这种情况下输出会有所不同。

构建客户端演示时会发生什么?

于 2012-11-04T01:01:05.970 回答