向Maven项目添加本地依赖项的最佳方法

ktm*_*124 4 java maven-3 maven

关于这一点有很多问题,但答案似乎相互矛盾.所以我想问一下我的Maven版本(3.0.4).

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

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

我很好奇哪种方式更好的做法?我听说过有关<systemPath>房产的一些负面消息,尽管这种方式看起来更快.

小智 8

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

$home_directory/.m2/repository 
Run Code Online (Sandbox Code Playgroud)

例如,您有expample.jar,并且您想将其添加到您的pom中:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>example</artifactId>
    <version>1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然后你必须将example.jar添加到:

$home_directory/.m2/repository/com/example/1.0/example.jar
Run Code Online (Sandbox Code Playgroud)

就我而言,NetBeans为我做了.


was*_*ren 7

答案是,这取决于......

  1. 如果将其添加为系统依赖项,则可能会变为路径依赖,这使得在其他开发人员之间共享变得更加困难.当然,您也可以通过SCM分发相对于您的POM的第三方jar,但systemPath更多的意图是JDK或VM提供的依赖关系.从该文档有关systemPath:

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

  2. 在本地仓库中安装jar也不适合共享.它要求所有开发人员在构建之前将jar"上传"到他们的本地仓库.您当然可以添加一个脚本来处理这个问题,但总是很容易忘记上传和IMO更好的解决方案是下面的第3点.此处描述了本地安装过程.

  3. 如果您在开发人员共享POM的组织中工作,则应将第三方jar上载到本地存储库管理器.这样你就可以轻松使用第三方jar,就像使用任何其他maven启用的jar一样.有关存储库管理器的完整列表,请查看此链接.

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

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