在Maven开发中,有时不能避免要使用到第三方Jar包,这些包在Maven Repo里找到不到。如何解决呢?
有两种方法。
第一种:安装到Maven Repository里。
1 |
mvn install:install-file -Dfile=D:\lib.jar -DgroupId=org.yli.lib -DartifactId=lib1 -Dversion=1.3 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true |
这样lib.jar会被安装到Maven的本地Repo里,坐标就是org.yli.lib:lib1:jar:1.3。在使用它的POM里就可以写:
1 2 3 4 5 6 |
<dependency> <groupId>org.yli.lib</groupId> <artifactId>lib1</artifactId> <version>1.3</version> <packaging>jar</packaging> </dependency> |
这种作法的缺点就是还不够灵活。除非把包安装到内部的Maven服务器上,不然团队统一就需要都安装相同的包。
第二种:使用<scope>system</scope>
如果没有内部的Maven服务器,但有个第三方包,团队可以从代码服务上下载到本地,我们可以通过设置<scope>system</scope>属性来设置dependency.
1 2 3 4 5 6 7 8 |
<dependency> <groupId>org.yli.lib</groupId> <artifactId>lib1</artifactId> <version>1.3</version> <packaging>jar</packaging> <scope>system</scope> <systemPath>${project.basedir}/lib.jar</systemPath> </dependency> |
如果你是一个多Module工项,project.basedir对于每个Project都不一样,但我们可以把这些依赖放到Parent Module里的dependencyManagement里,这样其他的Sub Module就可以不用再设置具体信息了。