2012-07-26 64 views
0

我只是做了一個非常醜陋的黑客攻擊。依賴於同一模塊的多個工件

我有一個模塊A,它產生兩個罐子。

moduleA.jar and moduleA.test.jar 

的module.test.jar在同一倉庫被其他項目,將不會進一步發佈到其他存儲庫。

我已將此添加的ivy.xml moduleA

<publications> 
    <artifact name="moduleA" type="jar" ext="jar" conf="compile"/> 

    <artifact name="moduleA.test" type="jar" ext="jar" conf="test"/> 
</publications> 

的我怎麼能消耗在moduleB。我明白,Maven不支持每個模塊的多個工件,並且我在某處讀到這是由IVY支持的。 我只是似乎沒有得到它寫。

我想這在moduleB的的ivy.xml:

<dependency org="my.org" name="moduleA" rev="SNAPSHOT" conf="compile,test->default,test" /> 
<dependency org="my.org" name="moduleA.test" rev="SNAPSHOT" conf="compile,test->default,test" /> 

但這顯然沒有奏效,因爲「名」是不是模塊工件的名稱。我有大約使用type屬性工作: 在moduleA:

<artifact name="moduleA" type="test.jar" ext="jar" conf="test"/> 

和moduleB:

<dependency org="my.org" name="moduleA" rev="SNAPSHOT" conf="compile,test->default,test" /> 

這個工作,但看起來非常難看。因爲我有可能造成ANT文件看起來像這樣:

moduleA-SNAPSHOT.test.jar 

任何很好地解決了因同一模塊的多個工件?

這個問題ID不同於: How do I solve Multiple artifacts of the module X are retrieved to the same file in Apache Ivy?

回答

1

假設模塊A看起來像這樣:

<info organisation="my.org" module="moduleA" .../> 

<configurations> 
    <conf name="compile description="???"/> 
    <conf name="test description="???"/> 
    .. 
</configurations> 

<publications> 
    <artifact name="moduleA" type="jar" ext="jar" conf="compile"/> 
    <artifact name="moduleA.test" type="jar" ext="jar" conf="test"/> 
</publications> 

以下模塊B聲明將檢索moduleA.jar

<dependency org="my.org" name="moduleA" rev="latest.integration" conf="default->compile" /> 

的模塊B聲明後將檢索moduleA.test.jar

<dependency org="my.org" name="moduleA" rev="latest.integration" conf="default->test" /> 

它的配置映射,使人們的工作:

default->compile 
^  ^
|   | 
Local configuration 
      | 
      Remote configuration 

本地配置沒有被「默認」。顯然,如果模塊B也使用配置,您可以使用其中的一種配置。

+0

它的工作方式非常神奇,謝謝。 我從中學到的另一個一般的東西是不要混淆conf1,conf2,conf3-> conf1,conf2,conf3是不好的做法 – 2012-07-30 11:46:18

相關問題