本文搭建的环境目标如下:
1. 搭建maven 环境,并配置好maven-proxy
2. 搭建continuum环境
整个环境包括服务器环境和开发人员环境:
服务器:Redhat AS4 Update4
开发环境:WindowsXP
服务器上安装 maven, maven-proxy, subversion, continuumn
开发环境上安装 eclipse, maven-eclipse-plugin, svn-eclipse-plugins
先说maven的环境吧:
服务器端的安装
安装maven需要先装好JDK,我安装的是JDK 1.6,安装好后设置好 JAVA_HOME 和 CLASSPATH 环境变量。
1. 下载 maven2 & maven-proxy
(1) maven 下载
下载地址:http://maven.apache.org/download.html
下载最新的release版本 maven-2.0.6
(2) maven-proxy下载
下载地址:http://maven-proxy.codehaus.org/
下载最新的release版本 maven-proxy 0.2
2. 安装 maven & maven-proxy
(1) mavne 安装
# cd /opt
# tar xvfz maven-2.0.6-bin.tar.gz
# cd /usr/local
# ln -s /opt/maven-2.0.6 maven
在profile里配置环境变量
MAVEN_HOEM=/usr/local/maven
PATH=$PATH:MAVEN_HOME/bin
export MAVEN_HOME PATH
测试maven安装是否成功
# mvn --version
显示 Maven version: 2.0.6 表示安装成功。
创建 /var/maven/repository目录,用于保存本地的库文件和插件文件
# cd /var
# mkdir maven
# chmod 777 maven
# cd maven
# mkdir repository
# chmod 777 repository
修改全局 maven setting.xml
修改 MAVEN_HOME/conf/seeting.xml
将 localRepository 的路径指向 /var/maven
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ~/.m2/repository
-->
<localRepository>/var/maven/repository</localRepository>
| The path to the local repository maven will use to store artifacts.
|
| Default: ~/.m2/repository
-->
<localRepository>/var/maven/repository</localRepository>
修改 mirrors,添加镜像服务器 maven-proxy
假设镜像服务器 maven-proxy IP 192.168.1.10,域名 maven-proxy.gehouse.cn
(如何配置域名,参考我的另一篇文章 RedHat AS4 Update4 DNS (bind 9) 配置 http://www.cnblogs.com/kylindai/archive/2007/04/16/716052.html)
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
-->
<mirror>
<id>maven-proxy.gehouse.cn</id>
<mirrorOf>*</mirrorOf>
<name>maven-proxy on gehouse.cn</name>
<url>http://maven-proxy.gehouse.cn:9999/repository</url>
</mirror>
</mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
-->
<mirror>
<id>maven-proxy.gehouse.cn</id>
<mirrorOf>*</mirrorOf>
<name>maven-proxy on gehouse.cn</name>
<url>http://maven-proxy.gehouse.cn:9999/repository</url>
</mirror>
</mirrors>
(2) maven-proxy 的安装
(在 maven-proxy.gehouse.cn 的机器上安装)
# cd /opt
# mkdir maven-proxy-0.2
# cd /usr/local
# ln -s /opt/maven-proxy-0.2 maven-proxy
# cd maven-proxy
# unzip maven-proxy-standalone-0.2.zip
得到 maven-proxy-standalone-0.2-app.jar
创建镜像服务器缓存maven库文件和maven插件的目录
# cd /usr/local/maven-proxy
# mkdir target
# cd target
# mkdir repo
# mkdir repo-local
编辑maven-proxy.properties配置文件
# vi maven-proxy.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://maven-proxy.gehouse.cn: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,tow,three
#Unauthenticated proxy
proxy.one.host=proxy1.example.org
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=local-repo,www-ibiblio-org,dist-codehaus-org,private-example-com
repo.list=local-repo,repo1-maven-org,www-ibiblio-org,dist-codehaus-org
#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
#repo1.maven.org
repo.repo1-maven-org.url=http://repo1.maven.org/maven2
repo.repo1-maven-org.description=repo1.maven.org
#repo.repo1-maven-org.proxy=one
repo.repo1-maven-org.hardfail=false
repo.repo1-maven-org.cache.period=360000
repo.repo1-maven-org.cache.failures=true
#www.ibiblio.org
repo.www-ibiblio-org.url=http://www.ibiblio.org/maven
repo.www-ibiblio-org.description=www.ibiblio.org
#repo.www-ibiblio-org.proxy=one
repo.www-ibiblio-org.hardfail=true
#Cache this repository for 1 hour
repo.www-ibiblio-org.cache.period=3600
repo.www-ibiblio-org.cache.failures=true
#dist.codehaus.org
repo.dist-codehaus-org.url=http://dist.codehaus.org
#repo.dist-codehaus-org.proxy=two
repo.dist-codehaus-org.hardfail=false
repo.dist-codehaus-org.cache.period=3600
repo.dist-codehaus-org.cache.failures=true
#private.example.com
repo.private-example-com.url=http://private.example.com/internal
repo.private-example-com.description=Commercial In Confidence Repository
repo.private-example-com.username=username1
repo.private-example-com.password=password1
repo.private-example-com.proxy=three
repo.private-example-com.cache.period=3600
# 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://maven-proxy.gehouse.cn: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,tow,three
#Unauthenticated proxy
proxy.one.host=proxy1.example.org
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=local-repo,www-ibiblio-org,dist-codehaus-org,private-example-com
repo.list=local-repo,repo1-maven-org,www-ibiblio-org,dist-codehaus-org
#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
#repo1.maven.org
repo.repo1-maven-org.url=http://repo1.maven.org/maven2
repo.repo1-maven-org.description=repo1.maven.org
#repo.repo1-maven-org.proxy=one
repo.repo1-maven-org.hardfail=false
repo.repo1-maven-org.cache.period=360000
repo.repo1-maven-org.cache.failures=true
#www.ibiblio.org
repo.www-ibiblio-org.url=http://www.ibiblio.org/maven
repo.www-ibiblio-org.description=www.ibiblio.org
#repo.www-ibiblio-org.proxy=one
repo.www-ibiblio-org.hardfail=true
#Cache this repository for 1 hour
repo.www-ibiblio-org.cache.period=3600
repo.www-ibiblio-org.cache.failures=true
#dist.codehaus.org
repo.dist-codehaus-org.url=http://dist.codehaus.org
#repo.dist-codehaus-org.proxy=two
repo.dist-codehaus-org.hardfail=false
repo.dist-codehaus-org.cache.period=3600
repo.dist-codehaus-org.cache.failures=true
#private.example.com
repo.private-example-com.url=http://private.example.com/internal
repo.private-example-com.description=Commercial In Confidence Repository
repo.private-example-com.username=username1
repo.private-example-com.password=password1
repo.private-example-com.proxy=three
repo.private-example-com.cache.period=3600
注意阅读这个配置文件,里面定义了 maven-proxy 服务器的端口,缓存库文件的路径,被镜像的服务器的列表等。
编辑启动maven-proxy的脚本 startup.sh
# vi startup.sh
java -jar maven-proxy-standalone-0.2-app.jar maven-proxy.properties >/dev/null &
# chmod +x startup.sh
启动 maven-proxy.sh
# ./startup.sh
在开发环境里的浏览器地址栏输入 http://maven-proxy.gehouse.cn:9999/repository 可以看到这个 maven-proxy 的页面,说明安装成功。