,我得到一長串錯誤,全部陳述「未知的解析器XYZ」。我知道解析器,它用於同一個項目但不同的任務。 據我所知,用於創建緩存條目的解析器已存儲,並且不能由後續解析器確定。在解析我的ivy.xml時出現錯誤消息:「未知的解析器XYZ」
問題是:我該如何避免這種情況?像這樣的Seeams並不是一個真正的錯誤,更像是一個警告,因爲我能夠解決所有的依賴並繼續編譯。
,我得到一長串錯誤,全部陳述「未知的解析器XYZ」。我知道解析器,它用於同一個項目但不同的任務。 據我所知,用於創建緩存條目的解析器已存儲,並且不能由後續解析器確定。在解析我的ivy.xml時出現錯誤消息:「未知的解析器XYZ」
問題是:我該如何避免這種情況?像這樣的Seeams並不是一個真正的錯誤,更像是一個警告,因爲我能夠解決所有的依賴並繼續編譯。
在同一個項目中,構建解析器不會更改,因爲它在您的ivysettings.xml文件中定義。
這更可能是一個陳舊的常春藤緩存問題。我建議添加一個清除緩存的額外目標。遇到此類問題時很有用:
<target name="clean-all" depends="clean" description="Purge ivy cache">
<ivy:cleancache/>
</target>
用詳細標誌(-v)運行您的ant構建。這將使您清楚地瞭解在整個解決過程中使用哪些設置文件。我的賭注是,你會很容易地發現你的問題,它會沿着你認爲你正在使用的設置文件的行沒有被使用。
在我的項目中,我發現這種類型的事情經常發生在解析後任務(如檢索)會自動觸發解析並使用默認常青藤設置而不是我希望它在時刻。很可能,您的默認設置文件不包含您期望的解析器。
爲了解決這些問題,我製作了一個僅包含解析器的ivysettings-common.xml。然後,在我的每個設置文件中,我導入常用設置並引用主鏈中的解析器。這看起來像:
<ivysettings>
<settings defaultResolver="all-repositories" />
<include file="ivysettings-common.xml" />
<resolvers>
<chain name="all-repositories" returnFirst="true" >
<resolver ref="project" />
<resolver ref="local" />
<resolver ref="hibernate" />
<resolver ref="ibibilo" />
</chain>
</resolvers>
</ivysettings>
從那裏,我使共同文件我的默認設置,只是「在緊急情況下,」我知道我所有的解析器可以發現(通過添加以下到ivy.properties):
ivy.settings.file = ${basedir}/path/to/ivysettings-common.xml
,但我明確指出我所有的常春藤調用適當的設置文件,試圖從不依賴默認值,因爲我使用ivy +螞蟻的全部原因是,我希望能有精確的控制在我的構建過程:
我希望能幫助你或其他人。
〜gMale
看起來很有希望,明天我會試一試。 – 2011-03-15 16:51:14
這是不正確的,解析器可以很容易地改變。我可以定義幾個解析器並通過模塊標籤進行配置。或者只是使用多個設置文件並通過settingsref屬性引用它們。 – 2011-02-28 21:18:39
當然可以。我的觀點是,常青藤緩存記錄了很多與解析器相關的信息。我的經驗是,這個緩存需要定期清除,特別是當我改變常春藤設置。 – 2011-03-02 09:16:05
終於承認這個答案,清理緩存對我有用。儘管我幾乎每次都在進行清潔工作,但仍然遠未達到最佳狀態。 – 2012-07-25 18:24:05