阿里云maven私有库上传jar包之两三事儿
最近做项目遇到个问题,其实也不是个大问题,主要是花的时间有点长,稍微的记录一下
问题:
在进行帆软报表的数字签名认证时,需要引入两个jar包,core、third这两个jar包,好死不死的这两个jar包,帆软并没有上传至公共的maven库,这就需要自己上传
方案一:
1:首先,上传至自己本地的maven库,保证开发没有问题
mvn install:install-file -DgroupId=com.sinoflag.fr -DartifactId=fine-third -Dversion=10.0 -Dpackaging=jar -Dfile=fine-third-10.0.jar
这里只配置一个,另外一个一样的命令
-Dfile 如果是在jar包所在文件夹则直接写名称即可,如果不是写jar包全路径
其他参数无需多说
2:由于我们用的是阿里云效的制品库作为maven的私库,因此需要再将两个jar包,传到私库上
问题来了,阿里的制品库,在浏览器页面上,上传时,third 这个jar包,上传失败 ,这个jar包足足有130多MB,我怀疑是它太胖了导致的(看来减肥还是有必要的)
等待后续:给阿里下发了工单,他们正在处理
其实用命令行是可以上传的,但是当时已懵逼,并不知道啊,后来用了命令行上传成功,而阿里正在解决页面上的上传问题
mvn deploy:deploy-file -DgroupId=com.sinoflag.fr -DartifactId=fine-third -Dversion=10.0 -Durl=私库地址 -Dpackaging=jar -DrepositoryId=私库ID -Dfile=fine-third-10.0.jar
这个命令的背后,当然还需要在maven配置文件里,配置阿里云的身份认证信息
这个方案有问题,那不能等啊,尝试着用另外一种方式,有次出现了方案二
方案二:将jar包放到项目工程中,再以引入本地系统jar包的方式引入
在项目根目录下,创建lib目录,并将上述两个jar包,放进去
然后pom文件为
<dependency>
<groupId>com.fr</groupId>
<artifactId>fine-core</artifactId>
<version>10.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/fine-core-10.0.jar</systemPath></dependency>
<dependency>
<groupId>com.fr</groupId>
<artifactId>fine-third</artifactId>
<version>10.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/fine-third-10.0.jar</systemPath>
</dependency>
ok,代码已经可以编译了,也没有问题了
但是你认为完美了吗??? 并没有
130多MB的jar包放在代码里,多占地方,服务器难道不嫌弃它吗,其他的文件,不嫌弃挤得慌吗
并且,目前编译部署,用的是阿里云的云效,用流水线去构建和部署,每次编译需要将代码copy到编译服务器去执行,多增加了130MB,copy过去的时候就问问你,急不急
不过制品库的依赖,在阿里云编译的时候是增量的,有缓存的
因此,最终还是选择了,搞阿里云的制品库,也就有了用命令行上传成功的操作了,花费了大半天的时间,让我想怼死我眼前的所有生物
以上!!!