Maven2 & Continuum 持续整合 (1)

经过几天努力,终于将Maven2 & Continuum 持续整合环境搭建成功,记录在这里。

本文搭建的环境目标如下:
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>

修改 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>


(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

注意阅读这个配置文件,里面定义了 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 的页面,说明安装成功。


posted @ 2007-05-05 18:08  kylindai  阅读(2067)  评论(0编辑  收藏  举报