簡體   English   中英

永無止境的Maven問題

[英]Never-Ending Maven Issues

我繼承了一個寫得不好的Java / Spring項目。 我正在使用Eclipse STS作為IDE。 每當我嘗試建立另一台計算機進行開發時,我都會陷入痛苦的世界。 經過大量的修補和斗爭,我將問題縮小為一個經常發生的問題-Maven的存儲庫。

我已經在新計算機上的STS中打開了該項目。 該項目無法構建,因為它聲稱某些Spring jar缺失或無效。 該文件位於(.m2)目錄中。 刪除它以進行更新,則Maven依賴項將下載文件的正確版本,並且錯誤消失。 僅由另一個錯誤替換,關於另一個jar文件。

重復幾次該過程后,我不再收到無效的jar文件錯誤。 相反,我遇到一個奇怪的錯誤,說assembly是無效的XML元素。

我完全刪除了.m2文件夾,然后讓Maven重新填充了該文件夾,該錯誤並未消失。 只有從另一台計算機(項目可以在其中編譯和運行)復制.m2文件夾后,問題才消失。

Eclipse錯誤日志中沒有與Maven相關的錯誤。 我所看到的只是“問題”窗格中的編譯錯誤。

為什么Maven會繼續下載損壞的JAR文件? 而且我如何才能避免這個問題呢?

澄清:我們未使用代理,並且在下載任何其他文件時也未遇到任何網絡問題。 Python的pip ,Node的npm ,Microsoft的nuget甚至是bower都可以完美無缺地工作,一天幾次,有時在同樣大的項目上也可以。 這是Maven唯一的問題,並且有很多機器。

其他信息:我正在使用STS 3.9.0.RELEASE(基於Eclipse 4.6.3)。 我正在使用STS嵌入式Maven,版本為3.3.9 / 1.7.0.20160603-1931(這是一個非常詳盡的版本號,我不確定這到底意味着什么...)。

我沒有〜/ .m2 / settings.xml文件(我刪除了整個.m2目錄)

這是pom.xml的存儲庫部分:

<repositories>

    <!-- For main Spring releases -->
    <repository>
        <id>org.springframework.maven.release</id>
        <name>Spring Maven Release Repository</name>
        <url>http://maven.springframework.org/release</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>

    <!-- For testing against latest Spring snapshots -->
    <repository>
        <id>org.springframework.maven.snapshot</id>
        <name>Spring Maven Snapshot Repository</name>
        <url>http://maven.springframework.org/snapshot</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>

    <!-- For developing against latest Spring milestones -->
    <repository>
        <id>org.springframework.maven.milestone</id>
        <name>Spring Maven Milestone Repository</name>
        <url>http://maven.springframework.org/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>

    <repository>
        <id>jboss</id>
        <name>JBoss repository</name>
        <url>https://repository.jboss.org/nexus/content/repositories/releases</url>
    </repository>


    <repository>
        <id>Servlet-api</id>
        <name>Servlet-api repository</name>
        <!-- <url>http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/</url> -->
        <url>http://search.maven.org/</url>
    </repository>


</repositories>

我已經安裝了Maven 3.5.0,並告訴Eclipse使用它。 目前看來,它正在工作。

也許您可以做的一件事就是防止Maven下載快照,或者在pom文件中為您有信心的jar文件明確定義版本。 您可以在存儲庫標簽中添加快照標簽。 發行可能會更穩定。

<repository>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
</repository>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM