samtiger


          QQ:418148757
          Name:yangchuan
          數據加載中……
          CruiseControl+maven2+SVN+apache+ldap(或其它)
              在項目的開發中我常常喜歡用cc+maven+svn對自己的代碼進行集成管理。有的時候,在搭建這個環境的時候,卻老是出一些這樣或那樣的毛病,所以今天在這里留下點痕跡,以便日后查閱:)
              環境及安裝配置:CruiseControl-2.5,maven-2.0.4,svn-1.4.0,apache2.0.54,ldap為windows2003下AD服務器。     
                            1:  CruiseControl-2.5 的安裝很容易直接next就可以了。
                            2:關于maven2.04的安裝,直接解壓到指定的目錄,但是這個地方需要配置它的環境變量,因為在安裝本地倉庫的時候,需要用到maven的相關命令。其環境變量的配置如下:
                             變量名 MAVEN_HOME; 變量值為maven的解壓路徑,在系統變量列表中找到系統變量path,在變量值后追加”;%MAVEN_HOME%\bin”。最后測試一下配置是否成功,可以在cmd下輸入mvn –v 如果正確則將提示Maven Version 2.0.4信息。
                           3:接下來先安裝apache,安裝過程中會提示填寫ServerName等,有的話就填,沒有的話就寫上IP,或是localhost. 安裝完apache,如果沒有出錯的話ApacheMonitor會出現在系統任務欄,并顯示已運行狀態. 
                           4:安裝svn-1.4.0,安裝過程中svn會檢測到系統中已經運行apache,apache會在期間自動重新啟動, ApacheMonitor的狀態欄也會自動改為"Apache/2.0.54(Win32) SVN/1.4.0 DAV/2",說明svn安裝成功.
                            備注:如果apache和svn沒有自動集成成功,也可以手動修改apache httpd.conf文件。具體說明將如下:

                         

          關于subversion與apache服務器配置問題
          版本: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目錄內
          這樣作好后,再創建SVN檔案庫
          新建目錄
          E:/sam/projects

          在CMD里輸入:
          svnadmin create E:/sam/projects/LDAPdms
          即創建了一個LDAP的檔案庫;
          然后在apache的httpd.conf配置文件里的最后加入
          <Location /dms>   
             DAV svn
             SVNPath E:\sam\projects\LdapDMS
          </Location>
          這樣即配置成功了APACHE+subversion的檔案庫
          可以通過http://localhost/dms訪問你的檔案庫了;
          2:怎么利用ldap (ad) + apache + subversion 進行檔案庫的權限管理;
          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>
              ##常規Subversion配置
              DAV svn
              # SVNListParentPath on
              # SVNParentPath e:/SVNWork
             SVNPath E:\sam\projects\LdapDMS
             AuthType Basic
             AuthName "/SVNWork"
          # 以下為LDAP配置信息
           # LDAP 協議版本,AD提供的LDAP為3
           LDAP_Protocol_Version 3
           # LDAP 服務器
           LDAP_Server localhost
           # LDAP 服務器端口
           LDAP_Port 389
           # LDAP 基礎DN
           Base_DN "ou=puyaodms,dc=ashan,dc=local"
           # AD 的 LDAP 不允許進行匿名查詢,因此需要提供一
           # 個 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>

          最后要發布項目到這個檔案庫,可以利用webtools的svn 發布過來,
          首先在以建好的項目的上邊右鍵,--team--share projects ;

          輸入:http://localhost:8888/LDAPdms

          next....

          svn配置好后,接下來,就是配置maven .
              m
          aven2的配置很簡單,主要是一個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> //項目或者組織的唯一標志,并且配置時生成的路徑也是由此生成,如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>
          //下邊是項目中需要依賴的庫或包,這些包默認存儲在X:\Documents and Settings\Administrator.LIPENG\.m2\repository(X是你操作系統所在盤符)下,
          //也就是maven2的本地倉庫。
          //maven將根據下邊的配置自動的在 http://repo1.maven.org/maven2上下載相應的包,當然我們也可以通過手動的形式把相應的包更新到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>
              // 創建CruiseControl的工作目錄,結構如下: 
          /**
                  E:/ccwork/logs,E:/ccwork/checkouts,E:/ccwork/artifacts     
                  注:CruiseControl支持構建多個項目,每個項目涉及:logs、checkout、artifacts。它們的作用分別是:記錄build結果、checkout代碼的工作目錄、部件發布地。這個結構就是為了這三個目的而創建的,每一級下的project_name都是對應的。
                 如本例需要在checkouts創建一個skmsys文件夾,并把svn上相應的代碼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 閱讀(2664) 評論(1)  編輯  收藏

          評論

          # re: CruiseControl+maven2+SVN+apache+ldap(或其它) 2007-09-28 16:32 千里冰封

          現在都流行用maven 了
            回復  更多評論    

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 买车| 公主岭市| 黎平县| 贵港市| 石楼县| 平邑县| 广德县| 通河县| 青冈县| 农安县| 竹北市| 蓝山县| 柳河县| 疏勒县| 资溪县| 临汾市| 淮阳县| 通渭县| 玉山县| 华蓥市| 卢龙县| 瑞昌市| 上林县| 临泽县| 贡山| 元氏县| 建始县| 金阳县| 大化| 邢台县| 德清县| 龙江县| 新干县| 铜山县| 海伦市| 张家川| 甘孜县| 沭阳县| 集安市| 安龙县| 潜江市|