maven组织项目+svn控制源码+cruisecontrol 持续集成

来源:互联网 发布:centos7网络配置无线 编辑:程序博客网 时间:2024/05/21 14:57
 

搭建 maven

java maven2具体应用如下:
1.下载maven2
http://maven.apache.org/download.html

2.设置二环境变量:解压,如解压在D:\mvntest,然后设置系统环境变量M2_HOME=D:\mvntest\apache-maven-3.0.3 ,path变量里添加D:\mvntest\apache-maven-3.0.3\bin,方便Maven在任何目录下运行。
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10

3.mvn -h可以查看帮助
如执行mvn --version可以查看版本信息

mvn --version

可以显示类似这样的信息:
Maven version: 2.0.8
Java version: 1.6.0
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
. . . . . .
. . .


4.创建一个新项目:
Maven2的运行命令是mvn,常用命令为:

创建Maven项目:mvn archetype:create
编译源代码:mvn compile
编译测试代码:mvn test-compile
运行测试:mvn test
产生site:mvn site
打包:mvn package
在本地Repository中安装jar:mvn install
清除产生的项目:mvn clean

【一】
1>.如:创建一个Java项目:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

补充说明:
 /*
  * Maven 在第一次创建时需要下载文件,需要联网
  * 考虑一下配置代理
  * 【解压缩包目录下settings.xml】D:\mvntest\apache-maven-3.0.3\conf
  * <offline>false</offline> 如果不想每次编译,都去查找远程中心库,那就设置为true。当然前提是你已经下载了必须的依赖包。
  *
  * <proxies>
  * <proxy>
   * <id>optional</id>
   * <active>true</active>
   * <protocol>http</protocol>
   * <username></username>
   * <password></password>
   * <host>10.255.1.131</host>
   * <port>80</port>
   * <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
   * </proxy>
   * </proxies>
  */

2>.生成.class文件:[进入同级目录下]

D:/mvntest\apache-maven-3.0.3\my-app> mvn eclipse:eclipse

3>.如果想把整个项目打包,则只需要执行命令: [进入同级目录下]
D:\mvntest\apache-maven-3.0.3\my-app>mvn package

4>.也可以测试一下该jar包,执行命令:
D:\mvntest\apache-maven-3.0.3\my-app>java -cp target/my-app-1.0-SNAPSHOT.jar com.oreilly.App

5>.如果输出:
Hello World!  则表示正确。

【二】
Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

 

在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:
validate,验证工程是否正确,所有需要的资源是否可用。
compile,编译项目的源代码。
test-compile,编译项目测试代码。
test,使用已编译的测试代码,测试已编译的源代码。
package,已发布的格式,如jar,将已编译的源代码打包。
integration-test,在集成测试可以运行的环境中处理和发布包。
verify,运行任何检查,验证包是否有效且达到质量标准。
install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
generate-sources,产生应用需要的任何额外的源代码,如xdoclet。
如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行 mvn test时,会先运行mvn test-compile,然后才是mvn test

因为maven2 是有生命周期这一概念的,所以如果你执行package,相应的以前步骤,如compile,test等都会自动执行。
刚开始执行会比较慢,需要从maven2远程库中下载所有的文件到本地。如果你的本地没有相应的依赖包,则每次maven都会去远程下载,所以配置一个镜像库就比较重要了。
. . . . . .

参考文档:http://www.cnblogs.com/flyingzqx/archive/2009/12/03/1616201.html
http://blog.chinaunix.net/u3/106704/showart_2261558.html
http://wenku.baidu.com/view/c069154f2e3f5727a5e96267.html --《百度文库》
http://www.ibm.com/developerworks/cn/java/j-maven/ http://www.duduwolf.com/wiki/2006/25.htm

构建CruiseControl

一、构建CruiseControl

你机器上至少要安装有JAVA 1.4,并在环境变量中设置有JAVA_HOME,并把java/bin加入到path中。CruiseControl自带了ANT,所以不用事先安装

如果从源码中构建CruiseControl,要确保你的机器可以访问互联网。因为构建过程中要检查一些license。另外,最好有SVN 客户端软件,因为在构建时,它会用到javahl

 

二、运行CruiseControl

直接运行CruiseControl目录下的CruiseControl.bat,它会自行启动Jetty6,当从Console中看到它启动完毕后,你就可以在浏览器中访问http://localhost:8080/dashboard,此时你会看到一个名为connectFour的示例项目在Dashboard上显示了。


(如果你足够快的话,你会发现Dashboard 上的小方块是从灰色变成深绿色的。为什么呢?我们以后再说。)
“绿色”表示该项目构建通过。如果要是有多个项目的话,应该看到多个小方块。

点击“Builds” Tab页,就到了 Builds 页。这一页会以列表的方式显示所有的项目。当前只有一个项目,所以在列表中只有一行,如下图所示:

 在该页面上点击某个项目时,会打开Build Detail页,显示该项目最近一次Build的信息。页面右侧是该项目所有历史构建信息。你会发现,这时connectFour项目有两个构建历史版本,一个是刚刚构建完成的,另一个是两年前的构建。这些信息是来自于CruiseControl对该项目的日志文件。此时,点击这两个构建结果中的任何一个,都会打开该次构建的Build Detail页面,显示相关的构建历史信息。如下图所示:

 

三、配置文件及其正确位置

配置文件包括两个,一个名为config.xml,另一个名为dashboard-config.xml。默认情况下,这两个文件和cruisecontrol.bat在同一下目录下,即工作目录

 如果在配置文件中,任何路径前面如果没有“/”的话,那就是相对于工作目录的。
      另外,CruiseControl是可以改变他们的位置的,但建议在没有深入了解CruiseControl时,不要试图改变它们,因为我们的目标是让CruiseControl在最短的时间里为你创建价值。

Config.xml 文件

<cruisecontrol>
    <project name="connectfour">  --这里的name应该和你在projects目录下的项目名完全一致。

        <listeners>          --用于监听项目状态的变化(指building,passed等)
            <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>  --这里的${project.name}
        </listeners>                                                                                                                是指“connectfour”

        <bootstrappers>        --用于CruiseControl从Repository更新代码
            <svnbootstrapper localWorkingCopy="projects/${project.name}" />
        </bootstrappers>

        <modificationset quietperiod="30">      --用于监听在quietperiod秒内,Repository是否变化
            <svn localWorkingCopy="projects/${project.name}"/>
        </modificationset>

        <schedule interval="300">  --用于每隔interval秒,CruiseControl去检查并计划一次构建
            <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
        </schedule>

        <log>  --用于得到并保存log文件。默认情况下,将放在projects/${project.name}的目录下
            <merge dir="projects/${project.name}/target/test-results"/> --用于将Build中生成的结果合并
        </log>                                                                                                           到log文件中

        <publishers>  --用于将构建的结果(如二进制文件)发布到指定的位置
            <onsuccess>  --决定在构建成功的情况下,发布哪些内容
                <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
            </onsuccess>
        </publishers>

    </project>
</cruisecontrol>

 

dashboard-config.xml  (一般情况下,此文件可以不变)

<?xml version="1.0" encoding="UTF-8"?>
<!--
/********************************************************************************
 这里省略了一些声明 :)
 ********************************************************************************/
 -->
 <dashboard>
     <buildloop
        logsdir=""        --这里指定logs目录,一定要与config.xml文件中一致,否则你会有麻烦。
                                                如果为空串,则默认为工作目录下的logs目录。
              artifactsdir="" />  --这里指定artifacts目录,一定要与config.xml文件中一致
                                                   如果为空串,则默认为工作目录下的artifacts目录。
    <features allowforcebuild=""/>  --是否可以在Dashboard上强制构建(force build)
    <trackingtool projectname="" baseurl="" keywords=""/>  --这是用于与Mingle的集成
     <subtabs>   --在这里,你可以自己扩展你自己的subtab页,不过要先实现一些接口。
        <subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" />
    </subtabs>
</dashboard>


四、配置文件中的注意事项

1、如果logs、artifacts和projects目录不存在,在你运行CruiseControl之前,要手工建立它们。
2、确保两个配置文件中的logs/artifacts目录指向同一个目录。因为CruiseControl core会向其中写数据,而Dashboard会从中读数据。

 

五、小贴士

在Config.xml文件中,有几个元素的概念要先澄清一下(只针对当前示例,严格定义请参见CruiseControl的文档)。

1.    <listeners> 用于监听状态变化,如waiting for build,queued,building。一般不用改变。

2.    <bootstrappers>用于检出代码,CruiseControl有很多种bootstrapper,示例中使用的是SVN。localWorkingCopy属性是指你把代码检出到安装CruiseControl机器的哪个文件目录。

3.    <modificationset>用于监听Repository的变化频率,如果CruiseControl发现代码有变化,而且在quietperiod秒内没有其它用户检入代码(用于保证被构建的版本完整性),CruiseControl才会检出代码。

4.    <schedule >用于指定CruiseControl去检查Repository的时间间隔。并指定使用哪个构建文件。示例中使用的是ant脚本,构建文件是被检出项目的根目录下的build.xml(即在Repository中)。

5.    <log>用于指定CruiseControl把日志放在哪里,把哪些构建结果放在日志中。如果没有指定任何属性,默认为logs目录下的${project.name}目录。

6.    <publishers> 用于在构建结束后,发布哪些消息和文件。CruiseControl有很多插件可以做各种各样的Publishing。例如,在构建成功后,通过http调用指定的页面,也可以给指定的人发邮件。在失败时,播放音乐,通知team。

 

参考文件:http://blog.csdn.net/tony1130/article/details/2041968

maven下nexus的搭建

nexus的安裝

1.nexus的下載地址


http://nexus.sonatype.org/downloads/
我下載的是nexus-oss-webapp-1.9.2-bundle.tar.gz

解壓後得到2個文件:nexus-oss-webapp-1.9.2 和sonatype-work
前者包含了nexus的運行環境和應用程序,後者包含了你自己的配置和數據。

2.啟動nexus

在上面提到,nexus的運行環境在nexus-oss-webapp-1.9.2目錄,下面就進入這個目錄啟動:

D:\nexus\nexus-oss-webapp-1.9.2\bin\jsw\windows-x86-32\nexus.bat (windows-x86-32根据自己的机器而定)

 

注意:jsw文件夾下有很多針對不同操作系統到文件夾,選中適合自己操作系統的文件夾。
也可以把start,stop做成腳本放在桌面上,避免不停的cd
附件為start和stop的腳本,請打開腳本修改自己本機上nexus的路徑。

 

3.打開nexus

在瀏覽器中訪問: http://localhost:8081/nexus

出現


点击右上角的login in
输入账号号:admin
输入密码:admin123
登录成功

 

配置nexus


由於在新搭建的nexus環境中只是一個空的倉庫,所以第一步就是要和遠程的Maven中心倉庫進行同步。



如果在Reindex之後,並沒有同步到遠程的倉庫,可以檢查每個倉庫的設置。下面是Maven Central的設置:





開打maven目錄-> conf -> settings.xml

找到localRepository
上面到註釋信息寫道:Default: ~/.m2/repository
我們可以添加

Java代码

  1. <localRepository>${M2_HOME}/repository</localRepository>    <localRepository>${M3_HOME}/repository</localRepository>


${M2_HOME}是maven到安裝路徑,新建個repository文件夾用來裝入本地的jar包,順手把以前默认的repository刪除.

依次在settings.xml文件裡輸入

Xml代码

  1.  <!-- nexus帳號和密碼-->  
  2.   
  3.    <server>     
  4.      <id>nexus-releases</id>     
  5.      <username>admin</username>     
  6.      <password>admin123</password>     
  7.    </server>     
  8.    <server>     
  9.      <id>nexus-snapshots</id>     
  10.      <username>admin</username>     
  11.      <password>admin123</password>     
  12.    </server>        
  13.  </servers>     
  14.   
  15. ...   
  16.   
  17. <!-- 引用naxus倉庫組-->  
  18.    <profile>  
  19.        <id>dev</id>  
  20.           <repositories>  
  21.              <repository>  
  22.                  <id>nexus</id>  
  23.                  <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>  
  24.                  <releases>  
  25.                     <enabled>true</enabled>  
  26.                  </releases>  
  27.                  <snapshots>  
  28.                     <enabled>true</enabled>  
  29.                  </snapshots>  
  30.               </repository>  
  31.             </repositories>              
  32.             <pluginRepositories>  
  33.                 <pluginRepository>  
  34.                     <id>nexus</id>  
  35.                     <url>http://127.0.0.1:8081/nexus/content/groups/public</url>  
  36.                     <releases>  
  37.                         <enabled>true</enabled>  
  38.                     </releases>  
  39.                     <snapshots>  
  40.                         <enabled>true</enabled>  
  41.                     </snapshots>  
  42.                 </pluginRepository>  
  43.             </pluginRepositories>  
  44.         </profile>  
  45. ..   
  46.   
  47.  <!-- nexus -->  
  48.   <activeProfiles>  
  49.         <activeProfile>dev</activeProfile>  
  50.   
  51.     </activeProfiles>   

注意:根據标识位置准确輸入

 

上傳jar到本地倉庫





選中3rd party 点击Artifact Upload标识点击select artifact(s) 按鈕選擇要上傳到jar包然後再add artiffact -> uplaod artiffact 即可。

編輯pom.xml的時候可能找不到在nexus的jar包


在nexus里查询本地上傳的jar包复制xml代碼到pom.xml文件保存即可。

编辑好pom.xml後保存
完毕後在${M2_HOME}/repository 文件裡可看到导的jar包。

 

参考文件:http://zhaohaolin.iteye.com/blog/1090403

下载安装SVN

参考文件:http://www.cnblogs.com/ttzhang/archive/2008/11/06/1325940.html

原创粉丝点击