- 浏览: 473523 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (201)
- j2ee (43)
- oracle (9)
- mysql (7)
- db2 (1)
- j2se (3)
- spring (1)
- hibernate (3)
- struts (0)
- Berkeley DB (0)
- linux (60)
- Apache2+PHP+MYSQL (2)
- solr (15)
- svn (1)
- IntelliJ Idea (1)
- eclipse,myeclipse (4)
- ant (2)
- vim (8)
- IT生活 (4)
- 测试 (6)
- lucene (4)
- shell (1)
- nutch (18)
- thread (1)
- hadoop (5)
- mapreduce (0)
- Python (4)
- 硬件 (1)
- database (1)
- maven (1)
- 正则表达 (0)
- 互联网 (1)
最新评论
-
youngcoder:
good job
HTTP协议头部与Keep-Alive模式详解 -
javazdq:
受教了 解释的不错。
lucene创建索引高级特性和索引创建参数优化 -
josico:
有几个问题想问下楼主1. LinkedBlockingQueu ...
生产者-消费者-BlockingQueue -
annybz:
有没有关于 BlockingQueue和ConcurrentL ...
生产者-消费者-BlockingQueue -
uniquejava:
多谢,记录的很真实。
DB2 学习记录
个人技术博客:http://demi-panda.com
具体怎样使用deploy命令部署构件到nexus服务器上可以参考经典的《Maven Definitive Guide》(Maven操作指南),书中的16.7节里面讲解的非常详细。假设我们在项目pom.xml文件中对maven服务器的设置信息如下:
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Local Nexus Repository</name>
<url>http://192.168.1.99:8081/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Local Nexus Repository</name>
<url>http://192.168.1.99:8081/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
这里我要说的是在使用的过程中遇到的几个都是“Failed to transfer file”错误,错误信息如下格式:
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),找到<servers>,然后修改信息如下:
<server>
<id>nexus-releases</id>
<username>deployment</username>
<password>deploydv89</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>deployment</username>
<password>deploydv89</password>
</server>
这里需要特别说明一句的是里面的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文件,我们将刚刚产生的主密钥放到这个文件中,文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<settingsSecurity>
<master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>
注意,这个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条的做法。
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Local Nexus Repository</name>
<url>http://192.168.1.99:8081/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Local Nexus Repository</name>
<url>http://192.168.1.99:8081/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
这里我要说的是在使用的过程中遇到的几个都是“Failed to transfer file”错误,错误信息如下格式:
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),找到<servers>,然后修改信息如下:
<server>
<id>nexus-releases</id>
<username>deployment</username>
<password>deploydv89</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>deployment</username>
<password>deploydv89</password>
</server>
这里需要特别说明一句的是里面的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文件,我们将刚刚产生的主密钥放到这个文件中,文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<settingsSecurity>
<master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>
注意,这个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条的做法。
发表评论
-
Java 对象序列化您不知道的 5 件事
2012-07-04 14:56 1361个人技术博客:http://demi-panda.com ... -
Solr 获取分词
2012-05-07 18:32 3529个人博客:http://demi-panda.com ... -
地图经纬度距离计算
2012-03-30 15:43 2372public static final doubl ... -
ThreadLocal类
2012-03-01 18:38 901个人技术博客:http://demi-panda.com ... -
解决 – java.lang.OutOfMemoryError: unable to create new native thread
2012-01-16 20:27 2729一、认识问题: 首先我们通过下面这个 测试程序 ... -
Spring MVC中默认的ResponseBody为String的乱码问题
2011-12-22 16:54 1381个人技术博客:http://demi-panda.com ... -
ASCII和中文互转
2011-07-29 13:34 3783个人技术博客:http://demi-panda.com ... -
JVM 参数详解
2011-07-06 14:23 6444个人技术博客:http://demi-panda.com ... -
URL encode
2011-06-22 15:00 3059个人技术博客:http://demi-panda.co ... -
笔记之三-robots
2011-06-16 16:13 1105一、robots robots主要作用是屏蔽一些不愿意让 ... -
HTTP协议头部与Keep-Alive模式详解
2011-06-16 15:55 17222个人技术博客:http://demi-panda.com ... -
java.net.SocketException: Too many open files解决方法
2011-03-24 15:34 1169Get current limit: ulimit - ... -
利用HAProxy实现负载均衡
2011-02-14 11:04 2441HAProxy的安装和部署 Posted o ... -
负载均衡工具haproxy安装,配置,使用
2011-02-12 11:28 3878一,什么是haproxy HAProxy提供高可 ... -
Java编程思想第四版 完整中文版下载
2011-01-09 21:11 4131个人技术博客:http://demi-panda.com ... -
Java 理论与实践: 正确使用 Volatile 变量
2011-01-06 23:45 461Java 语言中的 volatile ... -
Java常用正则表达式
2010-12-08 20:41 920"^\d+$" //非负整数(正整数 + ... -
JConsole远程连接
2010-12-02 13:58 996JConsole很好用,可以解决很多疑难杂症。但远程连接需要设 ... -
JVM配置参数中文说明
2010-12-02 13:04 1191JVM配置参数中文说明: -------- ... -
Java 代理模式与动态代理类
2010-11-21 16:51 3523代理模式与Java 动态代理类 ...
相关推荐
maven教程,目录如下: ...使用“mvn site-deploy”部署站点(WebDAV例子) 部署基于Maven的war文件到Tomcat Eclipse创建一个Maven Web项目 在易百教程网看到的,觉得还不错,就做成了chm笔记本形式
运行MAVEN的package命令,将在Root目录下构建一个build目录 ####最终构建目录 成功构建后配置remote-config.xml,并执行start.bat即可完成部署操作。 日志配置文件内置在remote-deploy-*.jar中,默认输出到控制台。 ...
如创建web项目,可以使用命令: mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp 5. 生命周期的引入 在Maven2中有了明确的生命周期概念...
使用Maven Dependency插件进行优化 8.6. 最终的POM 8.7. 小结 II. Maven Reference 9. 项目对象模型 9.1. 简介 9.2. POM 9.2.1. 超级POM 9.2.2. 最简单的POM 9.2.3. 有效POM 9.2.4. 真正的POM 9.3. ...
本地运行成功构建后,您可以使用sh target/bin/start运行该应用程序, sh target/bin/start是由Maven构建生成的Shell脚本,该脚本构造了目标/ repo中依赖项的正确类路径。部署编辑config.properties以设置目标服务器...
应该在命令行中执行它,以在特定环境中部署构建,如下所示: java -jar deploy-api.jar {env} {build} [{number}] 持续集成(CI)服务器应在特定的部署作业(每个环境中只有一个作业)期间调用此API。 程序需要...
宁静Maven插件 我们需要单独构建此插件,因为它取决于本地Maven存储库中存在的核心Serenity库。 发布过程 Serenity Maven插件的当前发行过程与其他Serenity模块所...进行部署构建( mvn clean deploy ) 切换回主分支
创建一个多合一的 jar,用于将 3rd 方工件部署到 S3 存储库。...cd 到您要部署的工件的目录,然后像这样使用 deploy:deploy-file。 mvn deploy:deploy-file -Dfile=java-aws-mturk.jar -DgroupId=com.
使用AWS Code Deploy和Jenkins进行构建和部署自动化这是一个Maven应用程序,用于使用以下组件a来自动进行构建和部署过程。 Amazon Code Deploy-作为应用程序环境b。 Amazon S3服务-修订/内部版本的存储b。 Jenkins-...
该插件有两个主要目标: heroku:deploy-only用于部署独立应用程序的heroku:deploy和heroku:deploy-only heroku:deploy-war用于部署WAR文件除了这两个主要目标之外,还可以使用另外三个目标: heroku:dashboard打开...
apigee-edge-maven-plugin是一个构建和部署实用程序,用于将Apigee ApiProxy的/应用程序捆绑包构建和部署到Apigee Edge Platform中。 该代码根据Apache License 2.0分发。 TL; DR 为自述提供了快速入门的入门步骤和...
#使用AWS Code Deploy和Jenkins进行构建和部署自动化这是一个maven应用程序,用于使用以下组件a来自动化构建和部署过程。 Amazon Code Deploy-作为应用程序环境b。 Amazon S3服务-修订/内部版本的存储b。 Jenkins-...
使用 maven 部署 $ mvn wildfly:deploy 传统部署 $ mvn clean package $ cp target/ROOT.war WILDFLY_HOME/standalone/deployments 使用 Docker 使用提供的 build.sh 脚本构建映像 、 和 使用启动容器 使用 ...
这个存储库有一个名为 deploy.sh 的脚本,它使您能够通过检出 repo、打包和构建工件、清除 tomcat 上以前的 webapps 并优雅地处理 tomcat 启动/停止来在 tomcat 上部署 webapp。 入门 对脚本的编辑 此脚本使用其 ...
如果仓库使用Maven进行构建,并且其中包含,则将使用Jib( )构建容器映像。 否则, (即pack build命令)将尝试构建存储库( )。 另外,您可以使用build.skip字段(参见下文)跳过这些内置的构建方法,
创建WAR文件后,将Heroku: Deploy WAR Artifact任务添加到您的构建配置中,并指定: API密钥:用于部署的Heroku API密钥。 您可以从获取Heroku API密钥。 应用名称:要部署到的应用。 WAR文件:在上一个构建步骤中...
使用Maven插件和Shell脚本/命令行工具可重复使用代码 贡献 为什么我们需要一种工具来管理Apigee的API开发生命周期? 可插拔环境(数千个npm和grunt模块和插件) Grunt非常适合通过轻松添加自定义任务来进行持续...
您可以使用以下 Maven 命令构建此项目: mvn clean install 部署到 该项目依赖的来部署到 Red Hat OpenShift。 OpenShift Maven 插件在 openshift 配置文件中可用。 您可以使用以下命令部署此应用程序: mvn oc...
若在Tomcat中部署,Maven文件中已经配置好直接在线部署,使用 maven tomcat7:deploy 可直接在线部署 (需先配置好Tomcat) 3. 导入数据库small.sql,在 \src\main\resources\jdbc.properties 中配置数据库 4. ...