2012-07-13 85 views
7

我一直在瀏覽Ivy文檔,並對ivy.jar中發現的默認ivysettings.xml有個疑問。ivysettings.xml:我可以在不修改jar或完全替換它們的情況下「修改」默認設置嗎?

我想要做的就是將公共存儲庫更改爲我們擁有的本地Maven存儲庫。而已。我可以將所有的ivysettings*.xml文件複製到我的項目中,並使用<ivy:settings>指向它,但是這複製了很多東西。我也可以修改ivy.jar,但這增加了維護難題。開發人員必須使用我的ivy.jar,如果我們轉到新版本,我不得不再次修改它。

那麼,我該如何保持所有的標準常春藤設置,並簡單地切換存儲庫使用?我只是想覆蓋我的變化到了艾維已經有的。


而且兩個問題:

  • 有什麼ivyconf*.xml文件和文件ivysettings*.xml之間的區別?爲什麼常春藤有重複配置?
  • 什麼是常春藤的好書?我現在正在使用Manning的Ant in Action,它以某種總結的方式涵蓋了常春藤,並且有點過時。 Ivy網站上的資源本身就很糟糕。

回答

1

終於搞明白了。

我從jar中複製了ivysettings.xml文件並作了一些修改。需要注意的是,第一包括指向常春藤${ivy.lib.dir},而不是一個XML文件${ivy.default.settings.dir}

<ivysettings> 
<settings defaultResolver="default"/> 
    <include file="${ivy.lib.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> 

我有我自己的ivysettings-public.xml是一樣的默認,但現在定義一個root到我的倉庫。(是的,它的本地主機現在,但我會把它設置爲實際的服務器一旦我得到的一切解決):現在

<ivysettings> 
    <resolvers> 
     <ibiblio name="public" m2compatible="true" 
       root="http://localhost:8081/artifactory/repo" /> 
    </resolvers> 
</ivysettings> 

,在我build.xml,我有以下幾點:

<property name="ivy.lib.dir"  value="${basedir}/ivy.lib"/> 

<taskdef uri="ivylib:org.apache.ivy.ant" 
    resource="org/apache/ivy/ant/antlib.xml"> 
    <classpath> 
     <fileset dir="${ivy.lib.dir}"> 
      <include name="ivy.jar"/> 
      <include name="ivy-*.jar"/> 
     </fileset> 
    </classpath> 
</taskdef> 

<ivy:configure file="${ivy.lib.dir}/ivysettings.xml" override="true"/> 

這似乎是訣竅。

+0

,您不應該複製通常的ivysettings.xml。 你可以在我的答案中寫下 。然後做你該做的事情。但我必須說。這些基礎知識在apach-ivy下載src中的示例中進行了介紹。 – 2012-07-14 21:05:07

6

這是我ivysettings.xml文件

<ivysettings> 
    <include url="${ivy.default.settings.dir}/ivysettings.xml"/> 
    <resolvers> 
     <chain name="download-chain" changingPattern=".*" checkmodified="true" > 
      <ibiblio name="maven" m2compatible="true" /> 
     </chain> 
    </resolvers> 
</ivysettings> 

請注意,我在這裏寫我額外的解析器,而是使用一切從標準之一,這是在網址中指定。這會加載ivy.jar文件中的ivysettings.xml設置。

至於ivyconf * .xml。我認爲它現在已被棄用。 Ivysettings是這樣做的新方法。

資源非常糟糕。我完全同意這一點。但是,stackoverflow.com中的很多答案都足夠冗長,並且實際上試圖預測問題

Mark O'Connor的答案特別詳細且直截了當。你必須接受這樣一個事實,即你正在學習新的東西,只是給它時間。

+0

我知道它會帶我的時間把它撿起來,但即使是最基礎的解釋不清。這將是第一個問題,如果他們' – 2012-07-13 20:23:20

+0

我得到這個權利,將會有:指向ivysettings.xml罐?因爲我從來沒有設置變量ivy.default.settings.url,而且我的文件系統上也沒有ivysettings.xml。 – 2015-12-11 09:04:34

+0

很久以前,但用-d或-v運行ant,它應該顯示大量信息,包括變量和屬性值 – 2015-12-11 09:28:36

0

在你的build.xml包括以下內容:

<property name="ivy.settings.dir" value="PATH OF SETTINGS" /> 
<property file="${ivy.settings.dir}/ivysettings.properties" /> 
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" /> 
相關問題