【问题标题】:Dependency on Multiple Artifacts of the Same Module对同一模块的多个工件的依赖
【发布时间】:2012-07-24 21:46:33
【问题描述】:

我刚刚做了一个非常丑陋的黑客攻击。

我有一个模块 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 属性的工作: 在模块A中:

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

在模块B中:

<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?

【问题讨论】:

    标签: ant 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 也使用配置,您可以使用其中之一。

    【讨论】:

    • 它就像魔术一样谢谢。我从中学到的另一件事是不要混淆 confmapping conf1,conf2,conf3->conf1,conf2,conf3 is bad bad practice
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多