我正在尝试将项目从ant转换为maven。
单元测试依赖于第三方二进制jar,这在任何公共maven存储库中都不可用。
如何让maven处理这种情况?我找到了两种解决方案,两者都不可接受。首先是使用系统依赖;这不起作用,因为a)依赖项应仅用于测试,b)生成eclipse项目后eclipse无法找到依赖项。
其次是在本地存储库中手动安装依赖项。这似乎是推荐的方式。我不想这样做,因为我希望用户能够使用简单的“mvn测试”进行构建和测试。如果用户必须阅读文档并复制/粘贴一些shell命令以便能够构建和测试,那么就会出现问题。
我认为如果maven本身在本地存储库中安装依赖项作为构建的一部分就可以了 - 这是可能的,如果是的话,怎么做?
ALED。
答案 0 :(得分:1)
您可能需要查看install:install-file。您可以通过standard means在项目的早期阶段(validate
或initialize
)执行此操作。
在第二个想法中,如果由于在同一个项目中缺少依赖性而失败,则还有更多选项。一种是通过antrun
插件调用ant脚本来安装工件。
或创建不依赖于要在主模块之前执行的工件的附加模块,并让该模块按照前面所述安装工件。
答案 1 :(得分:1)
首先,我的方法是使用诸如nexus之类的存储库管理器并在那里安装此依赖项。
然而,还有另一种解决方案。您可以将第三方jar包含到您的项目中,使用test plugin,您可以将其配置为包含在类路径中,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>path/to/additional/resources</additionalClasspathElement>
<additionalClasspathElement>path/to/additional/jar</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
顺便说一下,我希望你知道maven正在执行surefire插件,以便在默认的生命周期中运行测试。