如何在maven中分发二进制依赖?

时间:2011-11-04 23:01:27

标签: maven

我正在尝试将项目从ant转换为maven。

单元测试依赖于第三方二进制jar,这在任何公共maven存储库中都不可用。

如何让maven处理这种情况?我找到了两种解决方案,两者都不可接受。首先是使用系统依赖;这不起作用,因为a)依赖项应仅用于测试,b)生成eclipse项目后eclipse无法找到依赖项。

其次是在本地存储库中手动安装依赖项。这似乎是推荐的方式。我不想这样做,因为我希望用户能够使用简单的“mvn测试”进行构建和测试。如果用户必须阅读文档并复制/粘贴一些shell命令以便能够构建和测试,那么就会出现问题。

我认为如果maven本身在本地存储库中安装依赖项作为构建的一部分就可以了 - 这是可能的,如果是的话,怎么做?

ALED。

2 个答案:

答案 0 :(得分:1)

您可能需要查看install:install-file。您可以通过standard means在项目的早期阶段(validateinitialize)执行此操作。

在第二个想法中,如果由于在同一个项目中缺少依赖性而失败,则还有更多选项。一种是通过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插件,以便在默认的生命周期中运行测试。