【问题标题】:Best way to add local dependency to Maven project将本地依赖项添加到 Maven 项目的最佳方法
【发布时间】:2015-02-05 19:47:37
【问题描述】:

对此有很多问题,但答案似乎相互矛盾。所以我想问一下我的Maven版本(3.0.4)。

我有一个不属于任何 maven 存储库的 JAR 文件。这是本地依赖。我知道有两种方法可以将它添加到我的 Maven 项目中。

  1. 将其添加为依赖项并在<systemPath> 属性中指定文件路径。 (无需其他工作。)
  2. 创建一个本地存储库<my-project>/repo 并在此存储库中安装 JAR。然后,在我的 pom.xml 文件中添加新的存储库并添加新的依赖项。

我很好奇哪种方式更好?我听说过一些关于 <systemPath> 属性的负面消息,尽管这样看起来更快。

【问题讨论】:

  • 没有。开始使用存储库管理器将其上传到其中,然后像往常一样使用依赖项。进一步升级Maven版本。

标签: java maven maven-3


【解决方案1】:

答案是,这取决于...

  1. 如果您将其添加为系统依赖项,它可能会成为路径依赖项,这使得在其他开发人员之间共享变得更加困难。当然,您也可以通过 SCM 分发相对于您的 POM 的第 3 方 jar,但 systemPath 的目的更多是针对 JDK 或 VM 提供的依赖项。来自the docssystemPath

    它们通常用于告诉 Maven JDK 或 VM 提供的依赖项。因此,系统依赖关系对于解决对工件的依赖关系特别有用,这些工​​件现在由 JDK 提供,但之前可以单独下载。

  2. 在本地repo中安装jar也不利于分享。它要求所有开发人员在构建之前将 jar “上传”到他们的本地仓库。您当然可以添加一个为您处理此问题的脚本,但总是很容易忘记上传,IMO 更好的解决方案是下面的第 3 点。本地安装进程为described here

  3. 如果您在开发人员共享 POM 的组织中工作,您应该将第 3 方 jar 上传到本地存储库管理器。这样您就可以轻松地使用 3rd 方 jar,就像使用任何其他启用了 maven 的 jar 一样。查看this link 获取关于存储库管理器的完整列表。

总而言之,如果您与其他人共享 POM,我建议您将其上传到本地存储库管理器。否则,第二个选项可以为您工作。作为最后一个选项,我会退回到选项 1。

另请注意,这与您运行的 Maven 版本无关。

【讨论】:

  • 太棒了,谢谢。关于选项(2),我想到的是在 Maven 项目中创建一个本地存储库,并将这个本地存储库添加到 SVN。因此,当开发人员签出项目时,依赖项已经安装在那里。不过,我认为选项 (3) 是最好的方法。
【解决方案2】:

您可以将 jar 添加到本地 maven 存储库。通常位于:

$home_directory/.m2/repository 

例如你有 expample.jar,你想把它添加到你的 pom 中:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>example</artifactId>
    <version>1.0</version>
</dependency>

那么你必须添加example.jar到:

$home_directory/.m2/repository/com/example/1.0/example.jar

就我而言,NetBeans 为我做这件事。

【讨论】:

  • 我想过这个,但是问题是,当其他程序员签出项目并编译时,他们必须将jar添加到他们的本地存储库中;他们不知道这样做,所以它不会编译。
  • 在这种情况下,您需要@wassgren 所说的存储库管理器。我使用关系:sonatype.org/nexus
【解决方案3】:

到目前为止,我看到的最好的方法是将 install:install-file 目标与 maven 一起使用。您可以使用 mvn 命令行使用适当的参数直接执行它,或者如果您使用的是 eclipse EE,则可以通过利用嵌入式 maven 并创建运行配置来执行此操作,如下所示:

然后,按如下方式包含 jar:

    <dependency>
        <groupId>mylocal.weka</groupId>
        <artifactId>weka</artifactId>
        <version>1.0</version>
    </dependency>

当然可以根据需要调整参数。

最好, 海瑟姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2017-10-19
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多