1

会社をmaven2からmaven3にアップグレードしようとしています.1つのブロッカーは、特定のプロファイルをアクティブにすると、mavenリアクターが大量の古い依存関係情報を検索し始めるという奇妙な現象です(メモリがなくなるまで10分以上)。

範囲を持つ依存関係 (例: "[3.0,)") がある場合にそのような動作を見たことがありますが、それらすべてを一掃したと確信しています。

mvn dependency:tree と mvn help:effective-pom を使用すると、範囲の依存関係があるかどうかが表示されず、pom.xml ファイルで[、]、(または)を grep しても何も表示されないので、少し困惑しています。次にどこを突くかの瞬間。

私が話していることの例として、私の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=demo jetty:run

出力は、クライアント デモ アーティファクトのこれまでに存在したすべての履歴 SNAPSHOT の 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 に依存します ...しかしその場合、出力は異なると思います。

client-demo をビルドするとどうなりますか?

于 2012-11-04T01:01:05.970 に答える