`
hyw520110
  • 浏览: 218593 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

maven报错:mvn deploy

 
阅读更多

 一.Error deploying artifact: Failed to transfer file: http://10.1.251.240:8081/nexus/content/repositories/snapshots/com/asiainfo/biframe/aibi-component-utils/1.10.1-SNAPSHOT/aibi-component-utils-1.10.1-20110627.024041-24.jar . Return code is: 500

错误原因:服务器满了

二.错误信息如下格式: Error deploying artifact: Failed to transfer file:… Return code is:4xx 也就是说前面错误的信息都是一样的,只是后面返回的HTTP状态数字不同。

1. Return code is: 405 这个问题害我查了两个多小时才发现错误的根源,简单的错误就是在Maven执行到上传文件到服务器的时候出现一个HTTP 405错误。开始的时候总以为是Maven本身的问题,所以在这个上面浪费了不少时间。后来仔细查了405错误的含义是“用来访问本页面的 HTTP 方法不被允许”,最后终于发现是因为前面repository的地址写错了,或者是端口写错,或者是地址中的某个单词拼错了,反正原因就是 repository的地址写错了。

2. Return code is: 401或者Return code is: 403 其实403错误就是“禁止访问”的含义,所以问题的根源肯定在授权上面。Maven在默认情况下会使用deployment帐号(默认密码deploy) 登录的系统,但是关键的Nexus中Releases仓库默认的Deployment Policy是“Disable Redeploy”,所以无法部署的问题在这个地方,方法是将其修改为“Allow Redeploy”就可以了。 到这里还没有结束,因为如果直接按照上面的设置的话会有一个安全问题,那就是这样所有的开发人员都可以将构件部署到Nexus的releases仓库中 了,时间长了会导致这个仓库中非常乱,这也应该是nexus为什么默认情况下将Release仓库的发布权限关闭的原因了。解决这个问题的整体思路就是在 部署构件的时候需要使用用户名和密码登录,操作如下: (1) 首先将Releases仓库默认的Deployment Policy修改为“Allow Redeploy”; (2) 然后在右边的Security下面的Users中,修改deployment帐号的密码,方法是在帐号上右键,然后选择“Set Password”(PS:这个操作我找了好久,后来无意中右键才找到,呵呵~~); (3) 这个时候如果直接执行 mvn deploy 命令的话就又会出现401错误,还有一步就是将密码设置到Maven settings.xml中。打开settings.xml文件(${user.home}/.m/settings.xml或%{m2_home} /conf/settings.xml),找到,然后修改信息如下: <ID>nexus-releases<\/ID> <USERNAME>deployment<\/USERNAME> <PASSWORD>deploydv89<\/PASSWORD> <ID>nexus-snapshots<\/ID> <USERNAME>deployment<\/USERNAME> <PASSWORD>deploydv89<\/PASSWORD> 这里需要特别说明一句的是里面的id必须和你在项目pom.xml文件中distributionManagement下面设置的仓库id一致!当然了,这个里面你也可以设置admin帐号,或者参照deployment的权限手动添加新的帐号等等都是可以的。 当然,问题到这里已经得到了比较完美的解放,但是 如果有人还要较真的话会想到帐号的密码直接放到配置文件里面不是很安全。其实只要这里不建议放admin帐号,而deployment是无法登录的。如果非要更安全一些的话,也可以使用Maven 2.1.0之后所提供的密码加密功能,操作的步骤如下: (1) 使用“mvn –encrypt-master-password xxx”或“mvn –emp xxx”创建一个主密钥,后面的xxx就是你所要设置的密钥的内容,这个密钥主要用于后面加密密码来用的;命令执行之后会产生一个类似 {jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}形式的字符串。 (2) 在${user.home}/.m/目录下创建一个名为settings-security.xml文件,我们将刚刚产生的主密钥放到这个文件中,文件的内容如下: {jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=} 注意,这个settings-security.xml文件一定要放在${user.home}/.m/目录下面,而不能放在${m2_home}/conf目录下! (3) 使用“mvn –encrypt-password xxx”或“mvn –ep xxx”命令对帐号的密码进行加密,后面的xxx就是帐号的密码,加密之后依然会产生一个“{xxx}”形式的字符串,将这个字符串替换上面 settings.xml文件中的server下面的password节点内容即可。还有一种更安全的方式,就是将主密钥放到U盘里面,具体的操作可以看下面的参考资料。

3. Return code is: 400 400错误的含义是“错误的请求”,在这里的原因是往往是没有部署到nexus的仓库中。nexus的repository分三种类型:Hosted、 Proxy和Virtual,另外还有一个repository group(仓库组)用于对多个仓库进行组合。部署的时候只能部署到Hosted类型的仓库中,如果是其他类型就会出现这个400错误。 还有一种情况也会出现400错误,就是默认情况下部署构件到Releases仓库中有时也会出现400错误,这个原因就像上面提到的那样,Nexus中 Releases仓库默认的Deployment Policy是“Disable Redeploy”,所以无论你在settings.xml文件中将server的username设置为deployment还是使用admin都是无 法部署的,就会出现这个400错误。这个问题也困扰了我好长时间,而且我还看到网上有人说admin没有部署构件的权限,这个是不对的。修改的方法可以参 考上面第2条的做法。

分享到:
评论

相关推荐

    maven更新本地私服报错

    输入maven 版本查看 mvn -v 更新本地仓库命令 mvn help:system 回车如图是成功: 失败报错如下: Failed to execute goal org.apache.maven.plugins:maven-help-plugin:3.1.0:system &#40;default-cli&#41; on...

    maven 常用命令集合

    命令:mvn deploy 作用:将 jar 包发布到远程仓库 5. 清洁命令 命令:mvn clean 作用:清除目标目录中的生成结果 6. 生成项目信息网站命令 命令:mvn site 作用:生成项目相关信息的网站 7. Eclipse 项目...

    maven deploy时报错的解决方法

    当你运行`mvn deploy`命令时,Maven需要知道这个信息来确定应该把构建结果发送到哪里。 以下是如何解决这个问题的步骤: 1. **检查POM.xml文件**:首先,你需要确保`pom.xml`文件中的`&lt;distributionManagement&gt;`...

    maven常用命令

    19. 上传到私服:`mvn deploy` 20. 强制检查更新:`mvn clean install -U` 源码打包 21. 源码打包:`mvn source:jar` 或 `mvn source:jar-no-fork` 其他 1. 显示版本信息:`mvn -version` 或 `mvn -v` 2. 创建 ...

    Maven 教程:基础篇-尚硅谷学习笔记 2022年

    - `mvn deploy`:将项目部署到远程服务器。 ### 8. 多模块项目 Maven支持多模块项目结构,允许开发者将大型项目划分为多个子项目,每个子项目都有自己的POM,且共享父POM的配置。 ### 9. 父POM与继承 父POM可以...

    dockerfile-maven:成熟:一组用于处理Dockerfile的Maven工具

    Dockerfile Maven现状:成熟在这一点上,我们还没有开发或接受新功能,甚至没有修复非关键的... 当您键入mvn deploy , mvn deploy映像。 使目标记住您在做什么。 您可以键入mvn dockerfile:build和更高版本的mvn do

    MAVEN安装包:apache-maven-3.0.5.zip

    4. **发布到远程仓库**: 使用 `mvn deploy` 可以将构建好的项目发布到远程仓库供其他项目使用。 ### 五、Maven 的插件 - **maven-compiler-plugin**: 编译源代码。 - **maven-surefire-plugin**: 运行单元测试。 -...

    javaee7-simple-sample:用于 Maven、Jenkins 和 Nexus 工作流测试的示例 Java EE 7 应用程序。 摘自文章

    安装到本地 Maven 仓库: mvn install 存储在~/.m2/repository 中 将 SNAPSHOT 版本部署到本地 Nexus 只有二​​进制: mvn deploy 二进制文件,包括 javadoc 和源文件: mvn deploy -P release 执行 RELEASE :...

    mvn常用命令

    `mvn deploy:deploy-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar -DrepositoryId=maven-reposito` 这些命令可以帮助开发者快速地创建、编译、测试和部署...

    maven版本:apache-maven-3.5.4-bin

    使用Maven,开发者可以利用命令行工具进行各种操作,如初始化项目(`mvn archetype:create`)、编译源代码(`mvn compile`)、运行测试(`mvn test`)、打包应用(`mvn package`)、安装到本地仓库(`mvn install`)...

    formation_dta:编队数据

    安装到本地 Maven 仓库: mvn install 存储在~/.m2/repository 中 将 SNAPSHOT 版本部署到本地 Nexus 只有二​​进制: mvn deploy 二进制文件,包括 javadoc 和源文件: mvn deploy -P release 执行 RELEASE :...

    mon_premier_depot_github:在 github 上创建的第一个存储库

    将 WildFly 启动为: ./bin/standalone.sh bin/ ./bin/standalone.sh 将应用程序 WAR 部署到 WildFly: mvn wildfly:deploy 安装到本地 Maven 仓库: mvn install '~/.m2/repository' 中的 repo 将 SNAPSHOT 版本...

    maven本地仓库

    maven本地仓库

    示例Java-1

    安装到本地Maven存储库: mvn install 仓库〜/ .m2 / repo 将SNAPSHOT版本部署到本地Nexus 仅二进制文件: mvn deploy 二进制文件,包括javadoc和源jar: mvn deploy -P release 执行发布: mvn release:...

    Maven超级详细文档(依赖管理项目构建工具)

    - 使用mvn install或mvn deploy时,Maven会递归处理所有子模块。 6. Maven的常用命令: - mvn clean:清理目标目录,删除上次构建生成的文件。 - mvn install:site:生成项目网站和文档。 - mvn archetype:...

    javaee-samples-github

    bonjour ffjA simple Java EE 7 Sample BONJOUR BONJOUR DEVELOPPE 1=======... 安装到本地 Maven 仓库: mvn install '~/.m2/repository' 中的 repo 将 SNAPSHOT 版本部署到本地 Nexus 只有二​​进制: mvn deploy

    Linux中的maven压缩包:apache-maven-3.5.4-bin.tar.gz

    `mvn`命令支持各种生命周期阶段,如`clean`(清理项目)、`compile`(编译源代码)、`test`(运行测试)、`package`(打包项目)、`install`(将项目安装到本地仓库)和`deploy`(部署到远程仓库)。 此外,Maven的...

    Mvn常用命令总结

    mvn deploy:deploy-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar -DrepositoryId=maven-repository-inner -Durl=ftp://xxxxxxx/opt/maven/repository/ ...

    Maven deploy配置方法详解

    mvn deploy ``` 结果 执行 deploy 命令成功后,可以登录私服进行查询,看到对应的 jar 包。 小结 Maven deploy 配置方法详解,通过将项目的 jar 包上传到远程仓库中,以便其他开发者和工程共享。需要在 pom.xml ...

    常用maven命令2

    - 发布项目到远程仓库:`mvn deploy` - 处理并发布包到集成测试环境:`mvn integration-test` 9. **依赖管理** - 显示依赖树:`mvn dependency:tree` - 显示依赖列表:`mvn dependency:list` - 下载依赖源码:...

Global site tag (gtag.js) - Google Analytics