使用maven暴露模块服务(maven发布jar到私服)

首先,待暴露的服务有要求,去掉pom.xml中的spring-boot-maven-plugin插件的依赖;
        具体原因待查资料 ???

2)执行mvn install 命令,这时模块就会出现在maven的本地仓库了,
3)其它项目在pom.xml中引入依赖

操作完你会发现,当你修改了模块的代码重新install之后,依赖此模块的地方代码自动改变。当然,如果你的方法变动较大(已被其它项目依赖),比如本来原方法没有入参改成有入参,那么依赖你模块的地方惨了(会报错)。所以,但凡需要修改功能,要兼容老接口,最好是新增接口或方法重载,弃用旧接口(升级接口的情况)


待补充学习:mvn deploy命令
以下内容待实验验证:
mvn deploy:deploy-file 
-DgroupId=com.xy.oracle -DartifactId=ojdbc14 
-Dversion=10.2.0.4.0 
-Dpackaging=jar 
-Dfile=E:\ojdbc14.jar 
-Durl=http://localhost:9090/nexus-2.2-01/content/repositories/thirdparty/
-DrepositoryId=thirdparty

必选参数是这3个:-Dfile=E:\ojdbc14.jar 
-Durl=http://localhost:9090/nexus-2.2-01/content/repositories/thirdparty/
-DrepositoryId=thirdparty

-Durl  是公司私服地址
-Dfile  是要保留的服务jar包
-DrepositoryId  映射setting.xml中的中的元素,用来认证权限
例如:
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
-Dpackaging  打包类型,需要与-Dfile统一

maven发布自己的jar到私服

1、如果有密码:
在maven的settings.xml中,设置如下,一般要设置两个server,一个是正式库,一个是快照库(开发阶段使用,由于maven正式库是按版本判断新旧)
  <servers>
        <server>
          <id>releases-lingoace</id>
          <username>admin</username>
          <password>admin123</password>
        </server>

        <server>
            <id>snapshots-lingoace</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
2、pom.xml
<!-- 配置私服,版本号后有-SNAPSHOT的,会被maven识别为上传到快照库 -->
    <distributionManagement>
        <repository>
            <id>releases-lingoace</id>
            <name>lingoace releases repository</name>
            <url>https://xxxxx/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots-lingoace</id>
            <name>lingoace snapshots repository</name>
            <url>https://xxxxx/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
3、执行如下命令:
mvn clean deploy -X -Dmaven.test.skip=true即可。
如果发布成功会出现BUILD SUCCESS的字样。查看仓库https://xxxxx/repository/maven-snapshots已经包含了相应的包 

注意点:

  1. 必须配置快照库
  2. 版本号后有-SNAPSHOT的,会被maven识别为上传到快照库
  3. RELEASE库不允许上传SNAPSHOT的jar
  4. 如果是spring项目,上传jar不允许与引用此jar的项目有相同的Bean
  5. 前提在快照库,jar提供方修改代码后,只需要在根项目下执行mvn install命令;jar使用方的代码就会被同步。这就是使用maven方便的地方啊

发布到私服错误示例:

错误1:
Failed to dispatch transfer event 'PUT PROGRESSED https:///xxxx.jar <> /Users/edz/IdeaProjects/xxxxxxxx' to org.apache.maven.cli.transfer.ConsoleMavenTransferListener
java.lang.IllegalArgumentException: progressed file size cannot be greater than size: 61865984 > 58945141

原因:在多模块项目中,在父pom.xml中写发布配置,并在父目录下执行mvn deploy会报上述错误
解决办法:在要上传的模块的pom.xml中写发布配置,并在要上传模块目录下执行mvn deploy命令

错误2:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project ama-api: Failed to deploy artifacts: Could not transfer artifact xxxx:xxxxx:jar:1.0-20210513.103051-1 from/to snapshots-lingoace (https://xxxxxx/repository/maven-snapshots/): Transfer failed for https://xxxxxx/repository/maven-snapshots/com/lingoace/edu/ama-api/1.0-SNAPSHOT/ama-api-1.0-20210513.103051-1.jar 413 Request Entity Too Large 

原因:因为用了nginx代理,而nginx默认文件大小有限,所以需要设置nginx上传文件大小限制
解决方法:去nginx设置大小,然后重启nginx
client_max_body_size 200M;

参考文章

Maven打包项目到私服
maven deploy上传文件到私服踩坑
史上最全搭建MAVEN私服上传并使用JAR包教程
MAVEN多模块,父项目POM发布到MAVEN私服

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值