解决常春藤中的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 中的一个文件夹,该文件夹包含我的项目构建文件中的本地常春藤存储库