文章标签 ‘maven-deploy’

maven部署构件至Nexus私服

2011年11月17日 没有评论

首先在Nexus中创建一个自己私有的仓库,步骤为Repositories –> Add –> Hosted Repository,在页面的下半部分输入框中填入Repository ID和Repository Name即可,比如分别填入myrepo和 my repository,点击save就创建完成了。

如果要把构建部署至私服中,需要在构建的 pom.xml 文件增加 distributionManagement 配置项,有多种协议可以用来部署构建,这里主要讲两种。

  • 第一种配置如下:
<project>
	[...]	
	<distributionManagement>
		<repository>
			<id>myrep</id>
			<name>my repository</name>
			<url>file:/usr/local/mvn-private-server/nexus-oss-webapp-1.9.2.3/./../sonatype-work/nexus/storage/myrep/</url>
		</repository>
	</distributionManagement>
	[...]
</project>

说明:其中id就是需要部署构建的仓库Id,name似乎不重要,可以随便输入,url就是仓库的configuration中Default Local Storage Location项的对应的信息。采用此种方法,服务器不会对部署操作进行认证,同时配置也把仓库的物理存储地址完全暴露,感觉不是太好。

  • 第二种配置如下:
<project>
	[...]	
	<distributionManagement>
	  <repository>
		<id>tagphi</id>
		<url>http://nexus-server-ip:8081/nexus/content/repositories/myrep</url>
	  </repository>
	</distributionManagement>
	[...]
</project>

说明:上述的distributionManagement信息可以在对于的仓库的Summary中找到。

配置好后,此时执行mvn deploy,部署应该不会成功,根据提示信息,重新执行 mvn deploy -e 或 mvn deploy -X,此时能看到具体的错误信息,报Return code is: 401错,这个是因为发布者没有权限,需要把用户认证信息配置在maven的settings.xml中,该文件在mavne安装包下的conf目录下,这是一个全局配置,同时可以把该文件复制到 userdir/.m2 目录下,这样配置就只对当前用户生效。在settings.xml文件中servers段中添加如下信息

    <server>
      <id>myrep</id>
      <username>deployment</username>
      <password>password</password>
    </server>

其中id就是部署仓库的id,username是作为部署用户,Nexus系统默认的deployment,密码为deployment123,可以在security — users中找到,如果需要设置密码,在用户列表中找到该用户,在该用户上点击右键,会出来一个菜单供重置密码或修改密码。此时在执行 mvn deploy,应该可以看到成功发布了。当第二次执行 mvn deploy 又失败,这次失败原因是Return code is: 400,该错误的原因是在创建仓库时在configuration中的Deployment Policy设置为了Disable Redeploy,修改为Allow Redeploy即可。

无觅相关文章插件,快速提升流量