在开发过程中,往往会遇到对接其他公司的系统。然后对接公司会提供API对接方式,就是给一个jar包。我们只需要把jar包引入到项目中直接用即可。本地引用jar的话可以有两种方式。第一种就是本地包引用,如下将包放下工程下,然后maven指定。但这种方式在打包层面可能会有很多奇怪的问题。加上类似Jenkis构建会检查项目规范,不允许在工程中单独放入jar包,所以好的方式是将该包传到仓库直接引用。
<dependency>
<groupId>com.damo.openapi</groupId>
<artifactId>gic-api-platform-client</artifactId>
<version>1.28</version>
<!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->
<scope>system</scope>
<systemPath>${project.basedir}/lib/gic-api-platform-client-1.28.jar</systemPath>
</dependency>
放入本地仓库
首先是放入本地仓库,可在maven安装目录的bin目录下用命令窗口执行(注意每一个-前面都要一个空格,整条命令不要出现换行),执行完成后去自己的本地仓库查看是否已有此jar包。
mvn install:install-file -Dfile=C:\Users\ping.yuan\Desktop\gic-api-platform-client-1.28.jar -DgroupId=com.damo.openapi -DartifactId=gic-api-platform-client -Dversion=1.28 -Dpackaging=jar
然后代码项目就可以直接引用了。这里还有一个问题,就是发布过程中mvn读取的配置文件是默认的setting.xml。如果你有很多个不同的setting.xml注意命名区分。就像我的可能比较多,项目经常用的不是默认的配置。这里可能就会发布成功在项目中引入时也找不到。
放入远程仓库
可在maven安装目录的bin目录下用命令窗口执行(注意每一个-前面都要一个空格,整条命令不要出现换行)
mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=C:\Users\ping.yuan\Desktop\gic-api-platform-client-1.28.jar -DgroupId=com.damo.openapi -DartifactId=gic-api-platform-client -Dversion=1.28 -Dpackaging=jar -Durl=http://192.168.3.116:18081/nexus/content/repositories/thirdparty/ -DrepositoryId=nexus-releases
其中这里发布有几个参数需要说明,
Durl ----->对应远程仓库可发布的URL
DrepositoryId----->对应setting.xml中<server>标签中的<id>
几个常见的问题,第一个401错误
检查DrepositoryId是否配置正确,像我出现这个错误是用了<mirror>中的<id>标签导致,结果再去<server>找对应的用户名和密码时根本没找到
检查<server>标签中的<id>是否与命令中DrepositoryId一致,并且已经配置好用户名与密码。
第二个问题400错误,400 bad request.这个问题如果你在检查完参数之后都没问题,那就可能是Durl路径权限问题。可以打开你的私服地址,前缀到nexus即可到该界面,然后点击仓库。
可以看到我的Durl对应的路径地址的Type为group。这种type只是用来聚合展示的,没有直接上传权限。需要找到hosted的文件夹进行上传,将Durl换成该路径上传即可。
上传完成之后,能在type为group的路径下也能看到刚上传成功的包。