解决常春藤中的maven test-jar

Posted

技术标签:

【中文标题】解决常春藤中的maven test-jar【英文标题】:resolve maven test-jar in ivy 【发布时间】:2017-01-03 00:54:27 【问题描述】:

我需要从 ivy 项目中解决 maven test-jar 依赖项。检索罐子没有问题,但由于某种原因没有解决测试罐子......

这是我的解析器

<ibiblio name="nexus" root="$nexus-maven2-root" pattern="$nexus-maven2-pattern" m2compatible="true"/>

 <property name="nexus-maven2-pattern"
          value="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
          override="false" />

在 nexus 中,此工件已解析 (IBSCore-2.21-20160825.121144-2.jar),但此工件未解析 (IBSCore-2.21-20160825.121144-2-tests.jar)。

非常感谢您的帮助!

【问题讨论】:

为什么要使用 ibliblio 解析器指定模式? 【参考方案1】:

首先我猜这是一个带有快照版本的模块?你在 ivy 中的依赖声明是什么样的?

这是我的最佳猜测:

<dependency org="group.goes.here" name="IBSCore" rev="2.21-SNAPSHOT" />

其次,测试 jar 看起来像一个额外的模块工件,在 Maven 中会使用“分类器”来引用它,例如:

<dependency>
    <groupId>group.goes.here</groupId>
    <artifactId>IBSCore</artifactId>
    <version>2.21-SNAPSHOT</version>
    <classifier>tests</classifier>
</dependency>

所以,如果我是正确的,您可以通过在 ivy 依赖项中明确说明它们来检索这两个文件:

<dependency org="group.goes.here" name="IBSCore" rev="2.21-SNAPSHOT">
    <artifact name="IBSCore" type="jar" />
    <artifact name="IBSCore" type="jar" m:classifier="tests"/>
</dependency>

语法很奇怪,因为与 Ivy 不同,Maven 模块的元数据没有明确列出它包含的所有文件。当 Ivy 从 Maven 存储库下载时,它唯一支持的附加文件是源和 javadoc jar。有关更痛苦的细节,请参阅:

How are maven scopes mapped to ivy configurations by ivy

【讨论】:

非常感谢您的回答。这绝对有帮助!【参考方案2】:

问题的真正原因实际上是我有一些讨厌的蚂蚁任务执行以下操作:

 <target name="-do-resolve-ivy-dependencies" unless="ivy.cached">
    <ivy:resolve conf="default, test, test-utils" type="jar, war, bundle" log="download-only" checkIfChanged="false"/>
    <ivy:cachefileset setid="default.libs.id" conf="default" log="download-only"/>
    <ivy:cachefileset setid="test.libs.id" conf="test, test-utils" log="download-only"/>

    <path id="default.libs.path">
        <fileset refid="default.libs.id"/>
    </path>
    <path id="test.libs.path">
        <fileset refid="test.libs.id"/>
    </path>
</target>

所以“test-jar”类型没有被解析。添加这个就可以了。

【讨论】:

您可以使用 ivy cachepath 任务在一个步骤中创建 Ant 路径 ant.apache.org/ivy/history/latest-milestone/use/cachepath.html

以上是关于解决常春藤中的maven test-jar的主要内容,如果未能解决你的问题,请参考以下文章

请参阅 VSTS 中的一个文件夹,该文件夹包含我的项目构建文件中的本地常春藤存储库

本地存储库的好常春藤教程? [关闭]

无法使用 Eclipse 中的 IvyDE 插件从常春藤缓存中删除过时的工件

常春藤解决某些用户失败

使用 maven 存储库作为本地常春藤缓存

Maven还是常春藤?对于已经投入生产的系统,哪一个更好?还有其他的区别? [关闭]