maven-proxy配置:构建小型的maven代理

前言:mavn是比较常用的项目管理工具,如果在团队开发中,对于可公用的程序需要单独剥离出来并且仍想被maven管理的话,可能需要一个统一的远程jar管理平台,在maven系,有各种私服系统,我们在这里介绍一个轻量的maven代理器.其非常简单,对于小型公司,其足够实用..

maven-proxy是一个基于http/servert的服务器,用于存储基于maven的项目包(jar等)

 

maven-proxy的套路大概如下:

1)客户端开发机器,安装maven工具(http://maven.apache.org )

2)远程代理端,安装maven-proxy(http://maven-proxy.codehaus.org )

3)客户端maven通过配置远程jar代理服务器地址,来获取本地没有的jar

4)管理员或者开发者向proxy中push可用的maven项目(包括jar,source,pom.xml文件等)

5)开发机在maven项目中引用proxy中的jar

 

 

1.mavn-proxy的安装

 

从(http://maven-proxy.codehaus.org中下载maven-proxy,其有2个类型的安装程序

1)一个maven-proxy-standalone-0.2.zip:这个是基于java的一个程序,解压后获取jar.通过命令行执行其main方法以启动服务.

2)maven-proxy-webapp-0.2.zip:基于servet的java web项目,放在tomcat中既可使用..

 

maven-proxy应该是一个服务的方式被使用,我们在这里仅仅介绍,standaone方式的安装

 

maven-proxy在安装之前,需要对配置文件进行修改,这也是其服务得以正确使用的前提:

在其网站上下载*.properties文件(http://maven-proxy.codehaus.org/Configuration )

 

如下是本人可用properties文件全文:

 

################ GLOBAL SETTINGS
# This is where maven-proxy stores files it has downloaded
repo.local.store=./target/repo
#The port to listen on - not used if loaded as a webapp
port=9999

#This is the base area that all files are loaded from. While it is possible to leave this blank, this behaviour
#is deprecated and will be disabled in version 2.0.  There are too many namespace conflicts caused by not using
#a prefix.
#The repository will be shown at http://localhost:9999/repository/
#for the .war loaded into a webapp server, the default prefix is "repository" (edit the web.xml to change)
# As maven doesn't like a trailing slash, this address shouldn't have one either.
prefix=repository

#This is the simple date format used to display the last modified date while browsing the repository.
lastModifiedDateFormat=yyyy/MM/dd HH:mm:ss

################ SNAPSHOT HANDLING
#If you want the proxy to look for newer snapshots, set to true
snapshot.update=true

################ M2 METADATA HANDLING
#If you want the proxy to prevent looking for newer metadata, set to false (default is true)
#metadata.update=false

################ M2 POM HANDLING
#If you want the proxy to look for newer POMs, set to true (default is false)
pom.update=true

################ PROMOTION HANDLING
# ***** NOT CURRENTLY IMPLEMENTED *****
#Promotion describes the process by which new artifacts are loaded to global maven-proxy repository.  It
# is designed to be used by "higher security installations" that do not want to acquire artifacts from
# remote repositories without approval.
#
#If promotion handling is enabled, then the proxy will not download remote artifacts without permission
# (local repositories with copy=false are considered to be local)
#
#Permission to download is granted via the Promotion menu which will be enabled
#  when promotion handling is enabled.
#
#If promotion is false, artifacts are sourced from any repository as per normal.
#
#Promotion and snapshots:  If promotion is enabled, snapshots are not downloadable.  The concept of using
# a snapshot in a production build (which is primarily what promotion is for) is counterintuitive.
##
promotion=false

################ WEB INTERFACE
# This defines the absolute URL the server should use to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
# The prefix will be added to this for the actual repository
# i.e. proxy available at http://localhost:9999/, repository at http://localhost:9999/repository
serverName=http://localhost:9999

#If true, the repository can be browsed
browsable=true

#If true, the repository can be searched
searchable=true

#Not currently implemented. Will allow webdav access to the repository at some point.
webdav=true

#Stylesheet - if configured, will override the default stylesheet shipped with maven-proxy - absolute URLs only
#eg.  /maven-proxy/style.css, http://www.example.com/style.css
stylesheet=/maven-proxy/style.css

#bgColor / bgColorHighlight are replaced in the built in stylesheet to produce a simple color scheme.
#If a stylesheet is set, these are not used.
bgColor=#14B
bgColorHighlight=#94B

#rowColor / rowColorHighlight are replaced in the built in stylesheet to produce a simple color scheme.
#If a stylesheet is set, these are not used.
rowColor=#CCF
rowColorHighlight=#DDF


################ PROXIES
#This is just a hack, it should auto discover them
proxy.list=one

#Unauthenticated proxy
proxy.one.host=repo.test.com
proxy.one.port=3128

#Authenticated proxy
#proxy.two.host=proxy2.example.org
#proxy.two.port=80
#proxy.two.username=username2
#proxy.two.password=password2

#Authenticated proxy
#proxy.three.host=proxy3.example.net
#proxy.three.port=3129
#proxy.three.username=username3
#proxy.three.password=password3


################# REPOSITORIES
#This is not just a hack, it specifies the order repositories should be checked
#Note that the proxy adds a "/" which is why the urls aren't suffixed with a "/"
repo.list=repo-test-com

#local-store
# The local store represents a location that local jars you host can be located.
# This could also be achieved by having a local http repository, but this is less cumbersome
repo.local-repo.url=file:///./target/repo-local
repo.local-repo.description=Super Secret Custom Repository
#If copy is true, jars are copied from the store to the proxy-repo. Only configurable for file:/// repos
repo.local-repo.copy=false
#If hardfail is true, any unexpected errors from the repository will cause
#the client download to fail (typically with a 500 error)
repo.local-repo.hardfail=true
#Don't cache a file repository
repo.local-repo.cache.period=0

repo.repo-test-com.url=http://repo.test.com/repository
repo.repo-test-com.description=maven2
repo.repo-test-com.url.proxy=one
repo.repo-test-com.url.cache.period=3600
repo.repo-test-com.hardfail=false
repo.repo-test-com.cache.failures=true
 

配置文件中,url信息均是描述性信息,没有任何实际意义,这些信息会在你启动服务后,在页面上得以展示.

 

A)在系统中创建需要放置服务程序的路径:/usr/local/mvn-proxy

B)把maven-proxy-standalone-0.2-app.jar放在目录中,同时也把修改后的mavn-proxy.properties文件放在同一目录

C)在目录中,创建放置库文件的目录/target/repo(此文件夹名和properties中的配置信息保持一致)

D)新建一个命令文件:startup.sh

 

#!/bin/bash
java -jar maven-proxy-standalone-0.2-app.jar maven-proxy.properties
 

同时给sh文件权限:chmod u+x startup.sh

 

到目前位置,mavn-proxy准备工作基本结束.只需实行startup.sh既可启动服务

 

服务的默认配置端口是9999,如果你的系统有防火墙(linux),请赦免9999端口访问..

 

此时你在浏览器中输入:http://你的服务器ip:9999/

既可看到maven-proxy服务的首页,通过点击repository,可以查看库的信息.

 

 

2.maven的配置

 

proxy已经可用,那么如何通过maven(客户端)来获取或者感知proxy中的依赖包呢??

灰常简单....一贯作风,编辑maven的setting.xml增加其proxy配置信息既可,找到profiles标签

在其尾部增加如下信息:

<profile>  
		<id>central-repo</id>  
		<repositories>  
			<repository>  
				<id>local-repo</id>  
				<name>Internal Repository</name>  
				<url>http://192.168.0.105:9999/repository</url>  
			</repository>  
		</repositories>  
		<pluginRepositories>  
			<pluginRepository>  
				<id>local-repo</id>  
				<name>Internal Repository</name>  
				<url>http://192.168.0.105:9999/repository</url>  
			</pluginRepository>  
		</pluginRepositories>  
	</profile> 
  </profiles>
 

注意请讲url修改为自己的proxy服务器地址.其他信息可以不变...

当配置完profile后,请你别忘去激活它,激活的方式有2中,一个是在项目的pom.xml配置引用激活,另一种方式就是全局激活,全局激活需要修改maven的setting.xml文件.在文件中增加

  <activeProfiles>
    <activeProfile>central-repo</activeProfile>
  </activeProfiles>

 activeProfile的值要和你配置的profile的id保持一致.


3.发布jar

 

上面我们曾经建立过一个文件路径:mven-proxy/target/repo

发布jar,需要手动在此目录中增加文件,比如我要发布一个message-client-1.1.0.jar

规范的目录结构应该是:mven-proxy/target/repo/com/test/message-client/1.1.0

然后把你的message-client-1.1.0.jar,message-client-1.1.0.pom,_maven.repositories三个问题全部放在目录中..

 

启动服务后,你就在页面上看到相应的jar...

 

 

程序对proxy中jar的引用和普通jar依赖一样,无须做更多的配置...

 

 

 

 

 

 

 

你可能感兴趣的:(maven)