Maven系列二:利用Nexus搭建私服

一、简介

Nexus是一个应用广泛的Maven仓库管理软件。

二、安装

Nexus是典型的Java Web应用。它有两种部署方式:一种是部署bundle包,内置jetty服务器;一种是部署war包到java web 服务器(比如tomcat等),通过tomcat对外提供服务。

1、bundle方式安装

下载bundle包:http://download.sonatype.com/nexus/oss/nexus-2.6.0-05-bundle.zip,然后解压到某一目录(如/usr/local/)下面,解压之后包括两个文件夹:

(1)nexus-2.6.0-05:该目录包含了运行需要的文件:lib包、jetty服务器的配置、服务器启动\停止脚本等等。

(2)sonatype-work:该目录包含了服务生成的配置文件、仓库文件和日志文件等。

目录 /usr/local/nexus-2.6.0-05/bin下面包含了控制服务器的脚本,用法如下:

./nexus console:启动服务,所有的输出打印到控制台,可以通过Ctrl-C停止服务。

./nexus start:在后台以daemon方式启动服务

./nexus stop:停止后台启动的服务

./nexus status:显示后台服务的状态

./nexus restart:重启后台服务

Nexus服务默认监听8081端口,可以通过/usr/local/nexus-2.6.0-05/conf/nexus.properties中配置项目application-port进行修改。

2、war包方式安装

以war包方式其实就是一个普通的jave web部署。

三、仓库

仓库是nexus中最重要的概念之一。nexus中的仓库包括四种类型:宿主仓库(hosted)、代理仓库(proxy)、虚拟仓库(virtual)和仓库组(group)。仓库具有一定个格式(format):maven2/maven1。仓库具有一定的策略(policy):release和snapshot。

Nexus服务器初始时下列仓库:

(1)Releases仓库:这是一个宿主(hosted)仓库。该仓库一般用来保存我们自己的项目的发布版。

(2)Snapshots仓库:这是一个宿主(hosted)仓库。该仓库一般用来保存我们自己的项目的快照版本。

(3)3rd Party仓库:这是一个宿主(hosted)仓库。该仓库一般用来保存第三方的包。

(4)Apache Snapshots:这是一个代理(proxy)仓库。该仓库保存从apache快照库下载的包(http://repository.apache.org/snapshots/)。

(5)Codehaus Snapshots:这是一个代理(proxy)仓库。该仓库保存从codehaus快照库下载的包(http://nexus.codehaus.org/snapshots/)。

(6)Central:这是一个代理(proxy)仓库。该仓库保存从中央仓库下载的包(http://repo1.maven.org/maven2/)。

(7)Central M1 shadow:这是一个虚拟(virtual)仓库。该仓库以M1格式代理中央仓库。

(8)Public Repositories:这是一个组(group)仓库。该仓库可以代理以上仓库,通过统一的接口供外下载。

四、配置Maven项目从本地私服下载构件

1、项目文件配置方式

在project下面增加repositories和pluginRepositories

	<repositories>
		<repository>
			<id>nexus</id>
			<name>Nexus</name>
			<url>http://10.241.227.69:8081/nexus/content/groups/public/</url>
			<releases><enabled>true</enabled></releases>
			<snapshots><enabled>true</enabled></snapshots>
		</repository>
	</repositories>
	<pluginRepositories>
		<pluginRepository>
			<id>nexus</id>
			<name>Nexus</name>
			<url>http://10.241.227.69:8081/nexus/content/groups/public/</url>
			<releases><enabled>true</enabled></releases>
			<snapshots><enabled>true</enabled></snapshots>
		</pluginRepository>
	</pluginRepositories>

2、setting.xml配置方式

在profiles下面增加一个profile

    <profile>
    	<id>nexus</id>
    	<repositories>
		    <repository>
			    <id>nexus</id>
		    	<name>Nexus</name>
			    <url>http://10.241.227.69:8081/nexus/content/groups/public/</url>
			    <releases><enabled>true</enabled></releases>
			    <snapshots><enabled>true</enabled></snapshots>
		    </repository>
	    </repositories>
	    <pluginRepositories>
		    <pluginRepository>
			    <id>nexus</id>
			    <name>Nexus</name>
			    <url>http://10.241.227.69:8081/nexus/content/groups/public/</url>
			    <releases><enabled>true</enabled></releases>
			    <snapshots><enabled>true</enabled></snapshots>
		    </pluginRepository>
	     </pluginRepositories>
    </profile> 	
在activeProfiles下面增加一个activeProfile

  <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>  

五、部署构件至本地私服

在project下面配置distributionManagement

	<distributionManagement>
		<repository>
		  <id>nexus-releases</id>
		  <name>Nexus Releases Repository</name>
		  <url>http://10.241.227.69:8081/nexus/content/repositories/releases/</url>
		</repository>
		<snapshotRepository>
		  <id>nexus-releases</id>
		  <name>Nexus Releases Repository</name>
		  <url>http://10.241.227.69:8081/nexus/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>
这里配置了两个repository用来存储本地编译的构件。

匿名用户只有读权限没有部署权限。部署之前在setting.xml中配置认证信息。在servers下面增加配置admin/admin123是nexus服务的默认账号密码。

    <server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章