2012-04-27 97 views
1

當指定解析器常春藤模式能夠產生以下輸出時,有沒有辦法?其他常春藤代幣有售嗎?

C:/MyRepository/MyCompany/MyModule/1.2.3/4/ivy.xml 

當前,[revision]令牌解析爲完整的4位數版本號。我希望能夠使用版本的前三位數字作爲模式的一部分,並使用最後一位數字作爲其下方的子文件夾。這是可能的,還是我將不得不編寫自定義螞蟻代碼來做到這一點?

事情是這樣的:

<resolvers> 
    <filesystem name="myresolver"> 
     <ivy pattern="${my.dir}/[organisation]/[module]/[shortversion]/[rev]/ivy.xml" /> 
     <artifact pattern="${my.dir}/[organisation]/[module]/[shortversion]/[rev]/([target])[artifact].[ext]" /> 
    </filesystem> 
</resolvers> 

其中:

${my.dir} = C:/MyRepository/ 

和常春藤令牌有下列值:

[organisation] = MyCompany 
[module] = MyModule 
[shortversion] = 1.2.3 
[rev] = 4 

我意識到我做了這些虛擬代幣( shortrevision和rev),但我希望能夠做到的是修正編號部分(主要,次要,構建,r evision),以便我可以在模式中使用它們。

回答

1

常春藤支持extra attributes它可以連接到依賴性聲明如下:

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra"> 
    .. 
    <dependency org="MyCompany" name="MyCompany" rev="1.2.3" e:buildnum="4"/> 

額外屬性作爲正常的解析模式的範圍內:

<resolvers> 
    <filesystem name="myresolver"> 
     <ivy pattern="${my.dir}/[organisation]/[module]/[revision]/[buildnum]/ivy.xml" /> 
     <artifact pattern="${my.dir}/[organisation]/[module]/[revision]/[buildnum]/[artifact].[ext]" /> 
    </filesystem> 
</resolvers> 
+0

所以,如果我去了「額外屬性的路線,艾維自動遞增e:buildnum值,當你做一個構建和發佈?或者是我必須手動更新的東西?我目前發佈的方式是呼叫解決,交付和發佈。我將'pubrevision'值傳遞給交付的ant任務。我猜我現在必須手動更新Ivy.xml文件中的e:buildnum值。這是處理這個問題的最好方法嗎? – drohm 2012-04-27 19:16:10

+0

查看buildnumber任務,獲取自動增量功能。 http://ant.apache.org/ivy/history/latest-milestone/use/buildnumber.html。問題是它只適用於標準修訂參數。你必須想出一個替代策略來複制這個自定義版本屬性。其次,常春藤發佈任務也只有一個字段的修訂....說實話,我認爲你做了太多的工作,你真的需要兩個修訂領域? – 2012-04-27 19:40:24

+0

我同意,它將最終成爲超過必要的工作,但在我們的構建場景中,我們需要它。如果4位數版本的模塊名稱下只有一個文件夾,則所有版本將進入一個文件夾,如果您進行了大量構建,這將會變得非常大。這個想法是爲前3個數字使用一個文件夾,然後在每個版本的文件夾下使用一個文件夾。這將有助於隔離構建以最大限度地減少每個major.minor.build的數量。說實話,我們有些震驚,這種靈活性水平還沒有出爐,至少現在還沒有。 – drohm 2012-04-27 20:15:35