2012-10-22 15 views
1

我正在嘗試將我的公司從maven2升級到maven3,而且一個阻止程序是一個奇怪的現象,當我激活某個配置文件時,maven反應堆開始搜索大量舊的依賴信息(10多分鐘直到內存用完)。我可以使用什麼工具來找出爲什麼maven3搜索真正舊的內部SNAPSHOT?

我見過這種行爲,如果有一個依賴有一個範圍(例如「[3.0,)」),但我很確定我已經把所有這些都抹去了。

使用MVN依賴性:樹和MVN幫助:有效-POM也不會告訴我,如果有任何範圍的依賴性和grepping爲[,],在pom.xml中的文件(變成了什麼,所以我現在有點難以理解下一步要去哪裏。

有關的例子就是我說一下,在我的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 =演示碼頭:運行

輸出是以往任何時候存在我的客戶演示ARTIF的每一個歷史快照成千上萬的搜索POM數據act:

....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,則不會顯示不良行爲。所以這與反應堆處理配置文件激活的依賴關係的方式有關......我想

+0

你能展示你的pom的所有依賴嗎? – Carlos

+0

我可以,但是這個工件是一個相當長的依賴層次結構的「末尾」(即依賴於依賴於庫的庫,依賴於你得到的圖片)。我可以向你展示mvn依賴關係:tree,但是這是post-profile應用程序,並且存在問題。 明天早上我會發布pom.xml,看看是否有幫助。 – user311121

+0

這個問題是基於你的依賴關係,這些依賴關係是通過使用一個依賴關係添加的,這個依賴關係是通過一個非常奇怪而且非常糟糕的配置文件添加的。此外,輸出顯示您正在嘗試使用不在您的存儲庫(nexus)中的其他依賴項。除此之外,定義版本範圍是一個非常糟糕的做法。要測試這樣的構建,最好消滅整個本地存儲庫並嘗試構建(mvn clean package)。 – khmarbaise

回答

1

在你的情況下,我會嘗試一些東西,如help:effective-pom,只是爲了看看是否有什麼讓我感到驚訝。此外,mvn -X -Dclient=demo clean install,然後觀察日誌,看看是否可以找出不良行爲來自哪裏。客戶端演示:X-SHAPSHOT取決於other-lib:Y-SNAPSHOT,具體取決於客戶端演示:(X-1)-SNAPSHOT ...但我懷疑在這種情況下輸出會有所不同。

當您構建客戶端演示時會發生什麼?

相關問題