目录
方式1:通过scope指定
方式2:通过新建lib
方式3:通过build节点打包依赖
方式4:安装Jar包到本地
方式5:发布到远程私有仓库
方式6:删除_remote.repositories
方式7:打包源码到本地仓库
一般地,maven pom引入本地jar包的几种方式有:(请根据优缺点自行选择)
方式1:通过scope指定
通过scope指定为system,systemPath指定本地路径引入
<dependency><groupId>com.test.common</groupId><artifactId>common-util</artifactId><version>1.0.0</version><scope>system</scope><systemPath>lib/common-util-1.0.0</systemPath></dependency>
如果项目有很多jar包,则需要增加所有jar的本地引用地址;
方式2:通过新建lib
通过新建lib,之后通过工具添加依赖。但生产打包上线重新打包时依然有问题,所以此种方式只方便开发环境。
方式3:通过build节点打包依赖
通过新建lib,并添加jar包后,通过build节点打包依赖(此方式适用打包上线,但开发环境仍然需要结合方式2)
<build><resources><resource><directory>lib</directory><targetPath>/BOOT-INF/lib/</targetPath><includes><include>**/*.jar</include></includes></resource></resources></build>
方式4:安装Jar包到本地
安装到本地命令:
mvn install:install-file -DgroupId=[groupId] -DartifactId=[artifactId] -Dversion=[version] -Dpackaging=jar -Dfile=[path to file]
例如:
mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar -Dfile=D:\test\jar\pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar
方式5:发布到远程私有仓库
发布到远程私有仓库
mvn deploy:deploy-file -DgroupId==[groupId]-DartifactId=[artifactId] -Dversion=[version] -Dpackaging=jar -Dfile=[path to file]-Durl=[url] -DrepositoryId=[id]
需要有私服。
方式6:删除_remote.repositories
对于有些项目本来pom引用的是私服的jar包,但由于私服无法提供连接,但是复制了别人的repository下所有包,但打包时仍然每次都尝试去远程检查jar包而报错。
可删除二方包的_remote.repositories文件,避免maven在更换镜像的时候,每次都尝试去远程检查jar包。
这里提供一个bat脚本来批量删除,或者也可以使用Windows文件搜索工具Everything来完成。
@echo off
rem C:\Users\uuu\.m2\repository\cn\tongdun
rem C:\Users\uuu\.m2\repository\cn\fraudmetrix
rem C:\Users\uuu\.m2\repository\cn\tongdun
set REPOSITORY_PATH=C:\Users\uuu\.m2\repository\cn\fraudmetrix
rem searching...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*_remote.repositories*"') do (rem echo %%idel /s /q %%i
)
rem finished
echo end
pause
方式7:打包源码到本地仓库
在有源码的情况下,可以使用maven打包源码到本地仓库
mvn clean install
然后又可以通过pom简便的引用了:
<dependency><groupId>com.test.common</groupId><artifactId>common-util</artifactId><version>1.0.0</version></dependency>
打包之后类似于三方jar包的仓库形式:
以上7中方法,可以根据需要的场景使用。