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 阅读(2660) 评论(1)  编辑  收藏

评论

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

现在都流行用maven 了
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: