对此有很多疑问,但答案似乎相互矛盾。所以我想向它询问我的 Maven 版本(3.0.4)。
我有一个 JAR 文件,它不属于任何 Maven 存储库。这是本地依赖。我知道有两种方法可以将其添加到我的 Maven 项目中。
- 将其添加为依赖项并在中指定文件路径
<systemPath>
财产。 (不需要其他工作。)
- 创建本地存储库
<my-project>/repo
并在此存储库中安装 JAR。然后,在我的 pom.xml 文件中添加新存储库并添加新依赖项。
我很好奇哪种方法更好?我听说过一些关于<systemPath>
财产,虽然这种方式看起来更快。
答案是,这取决于...
-
如果将其添加为系统依赖项,它可能会变得依赖于路径,这使得在其他开发人员之间共享变得更加困难。当然,您也可以通过 SCM 分发与 POM 相关的第 3 方 jar,但其目的是systemPath
更多的是由 JDK 或 VM 提供的依赖项。从the docs http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html about systemPath
:
它们通常用于告诉 Maven 有关 JDK 或 VM 提供的依赖项的信息。因此,系统依赖关系对于解决对工件的依赖关系特别有用,这些工件现在由 JDK 提供,但之前可以作为单独下载提供。
将jar安装在本地repo中也不利于共享。它要求所有开发人员在构建之前将 jar“上传”到他们的本地存储库。您当然可以添加一个脚本来为您处理此问题,但总是很容易忘记上传,IMO 更好的解决方案是下面的第 3 点。本地安装过程是此处描述 http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html.
如果您在开发人员共享 POM 的组织中工作,您应该将第 3 方 jar 上传到本地存储库管理器。这样您就可以轻松使用第 3 方 jar,就像使用任何其他启用了 Maven 的 jar 一样。查看这个链接 http://maven.apache.org/repository-management.html有关存储库管理器的完整列表。
总而言之,如果您与其他人共享 POM,我建议您将其上传到本地存储库管理器。否则,第二个选项可以为您工作。作为最后一个选择,我会选择选项 1。
另请注意,这与您运行的 Maven 版本无关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)