首页 文章

对同一模块的多个工件的依赖性

提问于
浏览
0

我只是做了一个非常丑陋的黑客 .

我有一个模块A,它 生产环境 两个 jar .

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?

1 回答

  • 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也使用配置,您可以使用其中之一 .

相关问题