我们正在为现有项目添加新代码,该项目使用使用 Ant 和 Ivy 开发的自定义构建系统进行依赖关系管理。
我们的新团队习惯于 Maven 及其测试执行,cobertura报告等功能。
我们的问题是:添加与当前项目结构匹配的pom.xml是否可行,但是指示Maven从已经由Ivy填充的“lib”目录加载其类路径? 换句话说:我们希望在没有依赖管理的情况下使用Maven。
一个非常脏的方法是从libdir生成一个大jar并配置pom.xml以包含那个...但我们相信应该有更清洁的方法。
有任何想法或建议吗?
注意:我们对使用Ivy配置中的依赖项生成pom.xml不感兴趣,我们只是希望Maven依赖于Ivy生成的类路径。无需区分test / runtime / compile类路径。
答案 0 :(得分:1)
这是我们解决这个问题的最终设置:
谢谢大家的帮助!
答案 1 :(得分:0)
一种可能性是使用system
范围来定义maven中的依赖关系。这允许maven使用ivy下载的jar作为其依赖项。
e.g。
<dependencies>
<dependency>
<groupId>group.id</groupId>
<artifactId>artifact</artifactId>
<version>a.b.c</version>
<scope>system</scope>
<systemPath>${basedir}/lib/artifact-a.b.c.jar</systemPath>
</dependency>
...
</dependencies>
答案 2 :(得分:0)
也许makepom task会有所帮助,它会从常春藤文件中创建一个pom。
该页面的示例:
<ivy:makepom ivyfile="${basedir}/path/to/ivy.xml" pomfile="${basedir}/path/to/module.pom" conf="default,runtime">
<mapping conf="default" scope="compile"/>
<mapping conf="runtime" scope="runtime"/>
<dependency group="com.acme" artifact="acme-logging" version="1.0" optional="true"/>
</ivy:makepom>