前段时间看到了这个mybatis-plus的关联表扩展mybatis-plus-join,感觉可以用用,于是直接加到了我负责的应用,试用了一个迭代项目,感觉不错。
由于我自己本地下载了源码,又用maven进行了打包,所以本地的maven仓库里已经有了这个扩展的jar包了。本地跑应用一点问题都没有。
测试环境打包失败
但是当代码提交后,CICD的流水线就提示 com.github.yulichang.base.MPJBaseMapper 这个文件找不到
我查看了pom文件,所依赖的starter私有maven仓之前我也是已经通过mvn deploy上传了
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>1.4.5</version>
</dependency>
问过同事,才想起来,starter里面的依赖还未部署到私有maven仓库
从pom.xml进入mybatis-plus-join-boot-starter的pom,发现还有依赖的其他二方包需要上传
继续上传二方包,可以通过一下代码直接上传本地的二方包
mvn deploy:deploy-file
-DgroupId=com.github.yulichang
-DartifactId=mybatis-plus-join-root
-Dversion=1.4.5
-Dpackaging=jar
-Dfile=/Users/td/www/mybatis-plus-join/mybatis-plus-join-extension/target/mybatis-plus-join-extension-1.4.5.jar
-DrepositoryId=fraudmetrixRepo
-Durl=http://maven.**.cn/nexus/content/repositories/releases
但是问题来了,这个starter里面有层级,有很多个子二方包,相互之间又通过pom来加载,所以还需要将打包好的.pom文件也要部署到maven仓库
手工部署,文件很多,容易搞错
尝试手工上传,前几次顺利,后来又有失败的情况,权限验证失败,应该是maven的配置文件没指定,没读取到
使用idea的mvn命令来部署
手工不行,那就用idea吧,但是直接在mybatis-plus-join项目中的root种执行deploy,有报错
Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter
问了chatgpt,给出答案:
这个错误表示Maven在尝试部署项目时,没有找到用于部署的仓库信息。这个信息通常在 pom.xml文件的 元素中指定,或者在执行 mvn deploy命令时通过 \-DaltDeploymentRepository参数指定。
那就修改root的pom.xml,增加distributionManagement,注意这里的id,需要和mvn的setting.xml中server里设置账号密码的id要一致,否则校验不会通过
这里的snapshots可以不写,如果你只部署快照版的,那么将pom中的版本号加上-SNAPSHOT
<distributionManagement>
<repository>
<id>fraudmetrixRepo</id>
<url>http://maven.**.cn/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>fraudmetrixRepo</id>
<url>http://maven.**.cn/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
mvn的setting.xml
<servers>
<server>
<id>fraudmetrixRepo</id>
<username>developer</username>
<password>developer</password>
</server>
</servers>
配置好后,再执行deploy就可以将所有的mpj的依赖一起部署到maven仓库了。
但是由于之前我上传了部分依赖,所以导致原来的1.4.5版本无法再使用,我也没有找到部署部分二方包的方法,所以将所有依赖的版本全部修改为1.4.6再重新部署