关于这一点有很多问题,但答案似乎相互矛盾。所以我想问一下我的Maven版本(3.0.4)。
我有一个不属于任何maven存储库的JAR文件。这是当地的依赖。我知道有两种方法可以将它添加到我的Maven项目中。
<systemPath>
属性中指定文件路径。 (不需要其他工作。)<my-project>/repo
并在此存储库中安装JAR。然后,在我的pom.xml文件中添加新存储库并添加新的依赖项。我很好奇哪种方式更好的做法?我听说过有关<systemPath>
属性的一些负面信息,尽管这种方式看起来更快。
答案 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)
答案是,这取决于......
如果将其添加为系统依赖项,则可能会变为路径依赖,这使得在其他开发人员之间共享变得更加困难。当然,您也可以通过SCM分发相对于POM的第三方jar,但systemPath
的意图更多是JDK或VM提供的依赖关系。来自the docs关于systemPath
:
它们通常用于告诉Maven有关JDK或VM提供的依赖关系。因此,系统依赖性对于解决现在由JDK提供的工件的依赖性特别有用,但是可以在之前单独下载。
在本地仓库中安装jar也不方便共享。它要求所有开发人员在构建之前将jar“上传”到他们的本地仓库。您当然可以添加一个脚本来处理这个问题,但总是很容易忘记上传和IMO更好的解决方案是下面的第3点。本地安装过程为described here。
如果您在开发人员共享POM的组织中工作,则应将第三方jar上载到本地存储库管理器。这样你就可以轻松使用第三方jar,就像使用任何其他maven启用的jar一样。检查this link以获取有关存储库管理器的完整列表。
总而言之,如果您与其他人共享POM,我建议您将其上传到本地存储库管理器。否则第二个选项可以为您服务。作为最后一种选择,我会回到第1号选项。
另请注意,这与您正在运行的Maven版本无关。
答案 2 :(得分:1)
到目前为止,我看到的最好方法是使用install:install-file goal with maven。您可以使用mvn命令行直接使用适当的参数执行它,或者如果您使用的是eclipse EE,则可以通过利用嵌入式maven并按如下方式创建运行配置来执行此操作:
然后,您按如下方式包含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