maven引入本地jar的几种方式

断鸿 2020年02月05日 80次浏览

有时候Maven项目依赖于一个仓库中并不存在的jar时,ide中可以通过添加本地库保证本地启动,但是用maven打包时就会出现jar缺失的问题。一般的解决方案是通过将jar安装到仓库,但是这种方法繁琐,比如jenkins打包时,还需要将jar安装到私服中,如果不是私服就更麻烦了。

打包插件

<!-- scope作用域设置为system,systemPath设置为jar包的地址,其它可以随便填 -->
<dependency>
	<groupId>hello</groupId>
	<artifactId>world</artifactId>
	<version>1.0.0</version>
	<scope>system</scope>
	<systemPath>${project.basedir}/src/main/resources/local-lib/dss-util-3.0.3.jar</systemPath>
</dependency>

<!-- 打包插件中配置包含systemScope -->
<configuration>
	<includeSystemScope>true</includeSystemScope>
</configuration>

添加仓库

<!-- 添加仓库的方式 -->
<!-- 项目的pom文件中添加仓库,仓库的url建议在项目的路径下 -->
<repositories>
	<repository>
		<id>maven-repository</id>
		<url>file:///${project.basedir}/src/main/resources/lib</url>
	</repository>
</repositories>

<!-- 修改maven全局配置文件 -->
<mirror>
    <id>certainReposity</id>
	<name>certainReposity</name>
	<url>http://rdmaven.dahuatech.com:8081/nexus/content/groups/public/</url>
	<mirrorOf>*,!maven-repository</mirrorOf>
 </mirror>

扩展 — Maven中仓库(repository)和镜像(mirror)的区别

  • repository: 存放构建的地方,有本地仓库和远程仓库(中央仓库、公共库、私服)
  • mirror: 镜像相当于一个代理,会拦截去指定仓库下载构件的请求。然后从自己这里找出构件回送给客服端。一般处于网速的考虑。

mirror配置(mirrorOf)

<mirrors>
    <mirror>
        <id>certainReposity</id>
        <name>certainReposity</name>
        <url>http://rdmaven.dahuatech.com:8081/nexus/content/groups/public/</url>
        <mirrorOf>external:*</mirrorOf>
    </mirror>
</mirrors>