我需要在我的maven项目中添加大约15个jar,并且它在远程和中央存储库中都不可用。
然而,我已经实现了如下,
更改了pom,
<dependency>
<groupId>XXX</groupId>
<artifactId>YYY</artifactId>
<scope>system</scope>
<version>8.1</version>
<systemPath>${basedir}\src\lib\YYY.jar</systemPath>
</dependency>
我的问题:
我是否需要像上面那样分别重复所有15个罐子,或者我们有任何其他方式来绑定这些罐子并将其作为一个依赖路径?
这里讨论同样的事情Maven: System dependency pointing to multiple jars。但我想知道我是否可以获得更好的/新的想法,因为这是5年的讨论
Maven版本: 3.3.9
答案 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的回答所示,应避免使用系统范围。只需设置一个本地存储库。