CruiseControl+maven2+SVN+apache+ldap(或其它)
環(huán)境及安裝配置:CruiseControl-2.5,maven-2.0.4,svn-1.4.0,apache2.0.54,ldap為windows2003下AD服務(wù)器。
1: CruiseControl-2.5 的安裝很容易直接next就可以了。
2:關(guān)于maven2.04的安裝,直接解壓到指定的目錄,但是這個地方需要配置它的環(huán)境變量,因為在安裝本地倉庫的時候,需要用到maven的相關(guān)命令。其環(huán)境變量的配置如下:
變量名 MAVEN_HOME; 變量值為maven的解壓路徑,在系統(tǒng)變量列表中找到系統(tǒng)變量path,在變量值后追加”;%MAVEN_HOME%\bin”。最后測試一下配置是否成功,可以在cmd下輸入mvn –v 如果正確則將提示Maven Version 2.0.4信息。
3:接下來先安裝apache,安裝過程中會提示填寫ServerName等,有的話就填,沒有的話就寫上IP,或是localhost. 安裝完apache,如果沒有出錯的話ApacheMonitor會出現(xiàn)在系統(tǒng)任務(wù)欄,并顯示已運行狀態(tài).
4:安裝svn-1.4.0,安裝過程中svn會檢測到系統(tǒng)中已經(jīng)運行apache,apache會在期間自動重新啟動, ApacheMonitor的狀態(tài)欄也會自動改為"Apache/2.0.54(Win32) SVN/1.4.0 DAV/2",說明svn安裝成功.
備注:如果apache和svn沒有自動集成成功,也可以手動修改apache httpd.conf文件。具體說明將如下:
關(guān)于subversion與apache服務(wù)器配置問題
版本:subversion 1。40
apachae 2.054
安裝好兩個程序后,在apache2的httpd.conf文件里加入如下語句(一定要注意順序):
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
將mod_dav_svn.so 和mod_authz_svn.so copy 到modules目錄內(nèi)
這樣作好后,再創(chuàng)建SVN檔案庫
新建目錄
E:/sam/projects
在CMD里輸入:
svnadmin create E:/sam/projects/LDAPdms
即創(chuàng)建了一個LDAP的檔案庫;
然后在apache的httpd.conf配置文件里的最后加入
<Location /dms>
DAV svn
SVNPath E:\sam\projects\LdapDMS
</Location>
這樣即配置成功了APACHE+subversion的檔案庫
可以通過http://localhost/dms訪問你的檔案庫了;
2:怎么利用ldap (ad) + apache + subversion 進(jìn)行檔案庫的權(quán)限管理;
AD配置
域:ashan.local;
組織單元: puyaodms
用戶組: samSVNusers
用戶: 楊川,userid:sam password:tiger
該用戶屬于上邊的用戶組;
將需要的DLL加入到apache里面的modules 文件夾下,在httpd.conf文件里加入
LoadModule auth_ldap_module modules/mod_auth_ldap.dll
模塊;
然后在文件的最后加入:
<Location /LDAPdms>
##常規(guī)Subversion配置
DAV svn
# SVNListParentPath on
# SVNParentPath e:/SVNWork
SVNPath E:\sam\projects\LdapDMS
AuthType Basic
AuthName "/SVNWork"
# 以下為LDAP配置信息
# LDAP 協(xié)議版本,AD提供的LDAP為3
LDAP_Protocol_Version 3
# LDAP 服務(wù)器
LDAP_Server localhost
# LDAP 服務(wù)器端口
LDAP_Port 389
# LDAP 基礎(chǔ)DN
Base_DN "ou=puyaodms,dc=ashan,dc=local"
# AD 的 LDAP 不允許進(jìn)行匿名查詢,因此需要提供一
# 個 AD 中的用戶名及其密碼用于 Apache 的LDAP查詢
Bind_DN "cn=administrator,cn=Users,dc=ashan,dc=local"
Bind_Pass "tiger"
# 供 Apache 查詢的 AD Object 的屬性
UID_Attr "sAMAccountName"
# 允許什么條件的 AD 用戶訪問 Subversion;
# Require valid-group
Require filter "(memberOf=CN=samSVNusers,ou=puyaodms,dc=ashan,dc=local)"
</Location>
最后要發(fā)布項目到這個檔案庫,可以利用webtools的svn 發(fā)布過來,
首先在以建好的項目的上邊右鍵,--team--share projects ;
輸入:http://localhost:8888/LDAPdms
next....
svn配置好后,接下來,就是配置maven .maven2的配置很簡單,主要是一個pom.xml文件,這個文件的配置如下:
舉例說明:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>skmsys</groupId> //項目或者組織的唯一標(biāo)志,并且配置時生成的路徑也是由此生成,如org.sam.skmsys生成的相對路徑為:/org/sam/skmsys
<artifactId>skmsys</artifactId>//項目名稱
<packaging>war</packaging> //打包的機制,如pom, jar, maven-plugin, ejb, war, ear, rar, par
<version>1.0-SNAPSHOT</version> //版本
<build>
//資源目錄
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<directory>test</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<webResources>
<resource>
<directory>WebRoot</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
//下邊是項目中需要依賴的庫或包,這些包默認(rèn)存儲在X:\Documents and Settings\Administrator.LIPENG\.m2\repository(X是你操作系統(tǒng)所在盤符)下,
//也就是maven2的本地倉庫。
//maven將根據(jù)下邊的配置自動的在 http://repo1.maven.org/maven2上下載相應(yīng)的包,當(dāng)然我們也可以通過手動的形式把相應(yīng)的包更新到maven的本地倉
//庫,主要是用 mvn install:install-file -DgroupId=javax.transaction -DartifactId=commons-dbcp -Dversion=1.2.2 -Dpackaging=jar -Dfile=D:\src\commons-dbcp-1.2.2
//\commons-dbcp-1.2.2\commons-dbcp-1.2.2.jar
//其中:DartifactId 為要加入的包,Dversion加入報的版本,Dpackaging=jar什么樣的包,Dfile具體的包
//至于缺什么 樣的包,運行一次maven,察看包的錯誤就知道了
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>xwork</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>2.6.9</version>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>tomcat-http</artifactId>
<version>5.5.9</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.1.ga</version>
</dependency>
</dependencies>
</project>
最后講一下cruiseControl的配置:
cc 的配置也很簡單 具體也是配置一個config.xml文件即可,同樣用寫一個簡單的例子
<?xml version="1.0" ?>
<cruisecontrol>
// 創(chuàng)建CruiseControl的工作目錄,結(jié)構(gòu)如下:
/**
E:/ccwork/logs,E:/ccwork/checkouts,E:/ccwork/artifacts
注:CruiseControl支持構(gòu)建多個項目,每個項目涉及:logs、checkout、artifacts。它們的作用分別是:記錄build結(jié)果、checkout代碼的工作目錄、部件發(fā)布地。這個結(jié)構(gòu)就是為了這三個目的而創(chuàng)建的,每一級下的project_name都是對應(yīng)的。
如本例需要在checkouts創(chuàng)建一個skmsys文件夾,并把svn上相應(yīng)的代碼checkouts下來。以后cc就會自動地從這個地方update skmsys項目的代碼了
**/
<property name="cruisedir" value="E:/ccwork"/>
<property name="logdir" value="${cruisedir}/logs"/>
<property name="checkoutdir" value="${cruisedir}/checkouts"/>
<property name="artifactdir" value="${cruisedir}/artifacts"/>
<project name="skmsys">
<labelincrementer/>
<listeners>
<currentbuildstatuslistener file="${logdir}/${project.name}/status.txt"/>
</listeners>
<bootstrappers>
<svnbootstrapper localWorkingCopy="${checkoutdir}/${project.name}" />
</bootstrappers>
<modificationset quietperiod="30">
<svn localWorkingCopy="${checkoutdir}/${project.name}"/>
</modificationset>
<schedule interval="60">
<maven2 mvnscript="F:/Tools/server/maven/maven-2.0.4/bin/mvn.bat"
pomfile="${checkoutdir}/${project.name}/pom.xml"
goal="clean test war:war"/>
</schedule>
<log dir="${logdir}/${project.name}">
<merge dir="${checkoutdir}/${project.name}/target/surefire-reports"/>
</log>
<publishers>
<onsuccess>
<artifactspublisher dest="${artifactdir}/${project.name}"
file="${checkoutdir}/${project.name}/target/skmsys-1.0-SNAPSHOT.war"/>
</onsuccess>
</publishers>
</project>
</cruisecontrol>
//修改%CruiseControl_Home%/ webapps/cruisecontrol/WEB-INF/web.xml:
//查找:context-param logDir;修改它的值:…/ccworkplace/logs
//查找:ArtifactServlet的init-param rootDir;修改它的值:…/ccworkplace/artifacts
這樣就可以通過http://localhost:8080訪問你的項目管理信息了
posted on 2007-09-19 13:40 sam.chuan.yang 閱讀(2663) 評論(1) 編輯 收藏