我刚做了一个非常难看的黑客。
我有一个生产两个罐子的模块A.
moduleA.jar and moduleA.test.jar
module.test.jar由同一存储库中的其他项目使用,不会再发布到其他存储库。
我将此添加到moduleA的ivy.xml
<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" />
但这显然不起作用,因为'name'是模块的名称而不是工件。我有一个使用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
依赖于同一模块的多个工件的任何简洁解决方案?
这个问题与以下内容不同: How do I solve Multiple artifacts of the module X are retrieved to the same file in Apache Ivy?
答案 0 :(得分: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也使用配置,您可以使用其中之一。