我有一個主Ivy項目,其他項目通過svn:externals
屬性包含在他們的項目中。該項目包含Ivy jar,連接到我們項目的默認ivysettings.xml文件,以及一些Ant宏,它們允許我標準化構建jar等方式(例如,用戶使用<jar.macro>
與<jar>
。<jar.macro>
使用相同的參數,但也自動將pom.xml
嵌入到jar中,並將Jenkins構建信息添加到Manifest中)。常春藤:<ivy:settings> vs <ivy:configure>
我們也使用Jenkins作爲我們的持續集成系統。我想要做的一件事是清理每個構建的常青藤緩存,所以我們沒有任何由於緩存問題導致的jar問題。要做到這一點,我設置我ivysettings.xml
文件來定義每個詹金斯執行人單獨的緩存:
<ivysettings>
<property name="env.EXECUTOR_NUMBER" value="0" override="false"/>
<caches
defaultCacheDir="${ivy.default.ivy.user.dir}/cache-${env.EXECUTOR_NUMBER}"
resolutionCacheDir="${ivy.dir}/../target/ivy.cache"/>
<settings defaultResolver="default"/>
<include file="${ivy.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>
我原本使用的是<ivy:settings>
任務來配置我們的常春藤項目。然而,Jenkins的所有執行者都使用了相同的Ivy緩存,這造成了問題。我從<ivy:settings>
切換到<ivy:configure>
,問題就消失了。顯然,<ivy:configure>
立即設置常春藤(從而正確設置緩存),而<ivy:settings>
不會設置常春藤,直到調用<ivy:resolve>
。
我在Nabble上看到過一些關於<ivy:configure>
的郵件(或者可能不會)。我看不到任何常春藤在線文檔<ivy:configure>
已被棄用。
那麼,您什麼時候可以使用<ivy:settings>
與<ivy:configure>
。在我的情況下,因爲我需要爲每個Jenkins執行器單獨使用緩存,所以我需要使用<ivy:configure>
,但是有什麼原因可以使用<ivy:settings>
而不是<ivy:configure>
?而且,<ivy:configure>
已棄用?
優秀的問題。我從來沒有使用過「配置」任務。我懷疑這個設置任務更有用,因爲它可以讓你使用多個常青藤設置文件來執行多個常春藤解決任務。由於我很少調用一次常春藤決心,所以在我的例子中,看起來沒有任何真正的功能差異:-) –
除了''和''可以帶一個_settings ID_,所以他們似乎都能夠使用多個設置和多個解析。它在''文檔中明確提到了這一點,但似乎這兩個任務都支持這個功能。我相信''是在Ivy 2.x中默認使用的,但在我的情況下,我的''引起了問題,但不是使用''。 –
也許這個問題最好發佈到開發者郵件列表上。就像我說過的,我很少在構建中執行一次常春藤決心。這就解釋了爲什麼我從不需要指定設置ID。是的,這是一個難題 –