Maven外部依赖

时间:2016-01-11 12:44:05

标签: java maven

我需要在我的maven项目中添加大约15个jar,并且它在远程和中央存储库中都不可用。

然而,我已经实现了如下,

  1. 在我的项目路径(\ src \ lib)
  2. 中添加了jar
  3. 更改了pom,

    <dependency>
    <groupId>XXX</groupId>
    <artifactId>YYY</artifactId>
    <scope>system</scope>
    <version>8.1</version>
    <systemPath>${basedir}\src\lib\YYY.jar</systemPath>
    </dependency>
    
  4. 我的问题:

    我是否需要像上面那样分别重复所有15个罐子,或者我们有任何其他方式来绑定这些罐子并将其作为一个依赖路径?

    这里讨论同样的事情Maven: System dependency pointing to multiple jars。但我想知道我是否可以获得更好的/新的想法,因为这是5年的讨论

    Maven版本: 3.3.9

3 个答案:

答案 0 :(得分:5)

我认为你永远不应该使用systemPath

相反,请考虑将jar安装到本地存储库中,如下所述:https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

Maven允许您通过手动调用在存储库中添加库:

Type error: Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given,

这样做,您的jar将安装在.m2存储库中,并且可以作为模块中的其他依赖项使用

编辑: 我们可以补充说,在与同伴合作时,我们通常使用自己的存储库管理器,如Nexus(http://www.sonatype.org/nexus/)或Artifactory(https://www.jfrog.com/open-source/

答案 1 :(得分:4)

我建议使用Maven Repository Manager,例如Nexus(无论如何都推荐使用),并在那里托管你的第三方库而不是一些VCS。

一旦您上传了JAR,就可以将它们作为普通依赖项引用。

答案 2 :(得分:1)

要将它们作为系统范围处理,您需要将每个jar添加为单独的依赖项。

如果你预先处理并组合罐子(作为一个罐子)并给它们另一个Maven GAV坐标,如“XXX:MY-SUPER-JAR:1.0”,你可以指定为“单个”jar。注意:我不推荐这个,因为这是一个不好的做法。

如Prim的回答所示,应避免使用系统范围。只需设置一个本地存储库。