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

时间:2015-02-05 19:47:38

标签: java maven maven-3

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

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

  1. 将其添加为依赖项,并在<systemPath>属性中指定文件路径。 (不需要其他工作。)
  2. 创建本地存储库<my-project>/repo并在此存储库中安装JAR。然后,在我的pom.xml文件中添加新存储库并添加新的依赖项。
  3. 我很好奇哪种方式更好的做法?我听说过有关<systemPath>属性的一些负面信息,尽管这种方式看起来更快。

3 个答案:

答案 0 :(得分:7)

您可以将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为我做了这件事。

答案 1 :(得分:7)

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

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

      

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

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

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

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

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

答案 2 :(得分:1)

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

enter image description here

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

args = list("shape" = 1.2)
ggplot(data.frame(x = seq(0, 10, length.out = 100)), aes(x)) + 
  stat_function(fun = dweibull, args = args, color = "red") +
  stat_function(fun = function(...){1-pweibull(...)}, args = args, color = "green") +
  stat_function(fun = function(...){dweibull(...)/(1-pweibull(...))},
                args = args, color = "blue")

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

最佳, Haytham