maven在部署环节能干啥?
....
http://xugang-1017-126-com.iteye.com/blog/1634032
首先从官网上 http://maven.apache.org/ 下载最新版Maven。我用的是apache-maven-3.0.4-bin.tar.gz。将下载后的文件拷贝到 /usr/local/目录下。
1、执行 tar -zxvf apache-maven-3.0.4-bin.tar.gz 命令解压文件
2、解压后会生成apache-maven-3.0.4目录,删除apache-maven-3.0.4-bin.tar.gz压缩包文件
3、执行 ln -s apache-maven-3.0.4 apache-maven(为Maven做一个软链接,方便以后升级)
4、执行 vi /etc/profile 文件,插入如下内容
export M2_HOME=/usr/local/apache-maven
PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE ...
5、保存并退出VI编辑器,执行 source /etc/profile 命令使改动生效
6、执行 mvn -v 命令,如出现如下内容表示安装配置成功
[root@xg /]# mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)
Maven home: /usr/local/apache-maven
Java version: 1.6.0_33, vendor: Sun Microsystems Inc.
Java home: /usr/local/jdk1.6.0_33/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-279.2.1.el6.x86_64", arch: "amd64", family: "unix"
http://www.linuxidc.com/Linux/2011-07/39578.htm
写在前面
自从参加了4月份的QCon以后,持续集成的念头一直在脑海中浮现。时隔四个月之后,终于有了实践的机会。在此,首先应该感谢头儿们的大力支持。记得参加Scrum的培训时,最开始提到的一个障碍就是来自上层。因为上层希望看到的是实实在在的成果,如果现有的开发模式和质量管理系统已经有了比较好的效果,他们就不太愿意尝试新的模式。而这次正是有了头儿们的理解和支持,我才能放开手脚、“无所顾忌”地尝试这些新手段。其次,应该感谢我的天才同事们。因为,每次即使小小的改动都会给他们的开发带来一些不便,但是他们都会毫无抱怨地接受,并且总能给出一些我意想不到的想法,帮助我不断地改善这个系统。
虽然当前的CI系统还存在诸多问题,但是应该是时候做个总结了,记下这个过程发生的点点滴滴。还是那句话,能帮助看到这些文章的同学解决一些实际的问题。
CI运行的操作系统是:64位的CentOS
版本控制系统是CI中不可缺少的一环,在这两篇文章中已经记录了Subversion在CentOS下安装和配置过程:
Cent OS上配置Apache2 + SVN http://www.linuxidc.com/Linux/2011-07/39577.htm
Cent OS上配置Apache2 + SVN(续)实现对目录访问的精确控制 http://www.linuxidc.com/Linux/2011-07/39577p2.htm
这次就从Maven开始。
第一次和Maven的交战,我铩羽而归。这次做好了打持久战的准备。
一、安装(与Eclipse集成)
在Eclipse下使用Maven,需要安装m2eclipse插件:
1、Eclipse的Help菜单-->Install New Software
2、将插件的地址(http://m2eclipse.sonatype.org/sites/m2e)添加到可用Software Site中
3、勾选中间框中出现的“Maven Integration for Maven”,下一步
4、Eclipse就开始查找可以安装的组件以及依赖的包
5、即将安装的插件,会被列出
6、经过几分钟等待以后,会提示安装成功,需要重启Eclipse
注意:
1、对于第一次安装的插件,在5、6步骤之间会出现安装协议节目,直接选择接受(Accept),下一步(Next)即可。
2、通过上面的URL安装m2eclipse的版本是最新的0.10.0,由于该版本不能直接从0.9.8或者0.9.9升级得来,因此如果原来已经安装了m2eclipse0.9.8或者m2eclipse0.9.9就需要先卸载,再安装0.10.0。卸载方法如下:
(1)Eclipse的帮助(Help)菜单中的“关于Eclipse”(About Eclipse)
(2)选择原来安装m2eclipse插件卸载即可
(3)完成卸载之后,需要重启Eclipse。然后再按照上面的步骤安装最新的m2eclipse即可。
问题:在安装正常结束,并且重启Eclipse后,有时候会看到这样的提示:Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.
解决方法:找到Eclipse安装目录,编辑eclipse.ini文件,保存后,重启Eclipse即可:
二、使用Maven
1、新建一个项目
(1)打开新建Project向导窗口
(2)直接下一步
(3)中间步骤都直接下一步(next),直到:
这里只是创建了项目,接下来就可以使用Maven来管理项目中用到的library。
(接上篇)在新创建了项目之后,可以看到目录结构:
从图中可以看出,Maven自动将项目源文件和测试用例分别放到了不同的目录下,但是却使用了相同的包名。这样生成可执行的产品时,就比较容易将产品代码和测试代码隔离开;同时测试用例也可以直接引用同一包中被测试的类,既符合了JUnit的规范,也使程序更易读。
正如上图中标示,新建项目的JRE默认为J2SE-1.4,这会导致1.5之后的一些新特性得不到支持。可以通过下面的方法修改:
2、使用Maven管理依赖
在以往的开发中,我一般都会把用到的依赖都放到一个文件夹下,需要什么就像里面添加什么,然后和源文件一同放入到SVN中。其他开发人员在检出项目时会把这些包一起检出。但是这样做有几个弊端:
(1)最明显的一个问题,就是代码库会变得异常地大,有时候会上百兆,检出的时间会比较长
(2)为了保持每个开发人员的开发环境的设置都是独立的,我们会要求开发人员不能提交Eclipse项目配置文件,如.project、.settings等。这就需要每个开发人员必须自己配置自己Eclipse的构建路径(Build Path)。如果有新的依赖提交,而其他开发人员不知晓的情况,就可能编译会出错;
(3)Java的库文件对版本的要求比较严格,而有些第三方包发布并没有说明其所依赖的版本,需要自己苦苦寻找;
(4)虽然我们并不常会看第三方库的源代码,但是有时候也需要进去了解一下,帮助解决问题。这时就需要自己在Eclipse中指定源文件的位置。
而Maven很好的解决了以上问题,只需要一个配置文件,就可以搞定所有了。比如要在上面的MavenDemo项目中引入JUnit:
点击OK后,就会将依赖自动下载到本地,并添加到项目的构建路径中,
查看pom.xml的内容,就会发现依赖在文件中的配置:
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.4</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- </dependencies>
如果以后需要更改版本,只需要修改这里的版本号即可,当然可以从依赖的页面中删除和添加。
在上面提到了Maven可以自动管理依赖的依赖,为了显示这个强大的功能,特意引入了一个spring-core的包,然后切换到pom的Dependencies Graph页面,可以看到,虽然只引入了一个spring-core,但是Maven却自动发现了它依赖的另外两个包,省去我们的很多麻烦。
3. 运行测试用例
在/src/test/java编写一个测试用例,然后直接在项目名称上点击右键,从菜单中选择Run as-->maven test。在运行过程中,Maven会自动下载需要的包,并且给出一份详细的测试报告。
这种方式可以运行项目中所有用例。当然可以依照原来的习惯,在项目目录中选择一个文件,按照JUnit的方式运行。
在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的。另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新。可以通过搭建公司内部的Maven服务器,将第三方和内部的依赖统一管理。
这里使用Nexus来搭建本地的Maven服务器,过程比较简单。
一、安装服务器
1、下载
我们可以在nexus的官网上找到它的相关介绍,下载地址是:http://nexus.sonatype.org/downloads/,在这里可以找到最新的版本,如果需要以前的版本,在官网上应该也可以找到下载地址。我下载的是:nexus-oss-webapp-1.8.0-bundle.tar.gz。关于Nexus的详细使用方法可以参照:Repository Management with Nexus.
2、安装
解压下载的文件:
# tar xzvf nexus-oss-webapp-1.8.0-bundle.tar.gz
解压后会在同级目录中,出现两个文件夹:nexus-oss-webapp-1.8.0和sonatype-work,前者包含了nexus的运行环境和应用程序,后者包含了你自己的配置和数据。
3、启动nexus
在上面的提到,nexus的运行环境在nexus-oss-webapp-1.8.0目录,下面就进入这个目录启动:
# cd nexus-oss-webapp-1.8.0/bin/jsw/linux-x86-64/
在这个目录下包含了一个文件夹和三个文件:lib、nexus、platform和wrapper,其中nexus就是启动命令。
# ./nexus
执行上面的命令,可以得到nexus命令的用法提示:start 命令启动,stop命令停止。下面启动nexus:
# ./nexus start
Starting Nexus OSS...
Started Nexus OSS
从控制台输出可以看到Nexus已经启动成功,我们可以通过log文件查看更详细的信息:
# cd ~/nexus-oss-webapp-1.8.0/log
# tail -f wrapper.log
在log中可以看到nexus默认监听的端口是8081。那么我们就可以在浏览器中访问:http://host:8081/nexus,
二、配置Nexus
由于在新搭建的nexus环境中只是一个空的仓库,所以第一步就是要和远程的Maven中心仓库进行同步。
如果在Reindex之后,并没有同步到远程的仓库,可以检查每个仓库的设置。下面是Maven Central的设置:
三、在项目中使用私服
在完成了上面的配置后,就可以将项目中默认的Repository切换为本地的私服了,只需要在pom.xml中增加repositories就可以了:
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.maven.demo</groupId>
- <artifactId>MavenDemo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>MavenDemo</name>
- <url>http://maven.apache.org</url>
- <repositories>
- <repository>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <id>public</id>
- <name>Public Repositories</name>
- <url>http://172.28.189.138:8081/nexus/content/groups/public/</url>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>public</id>
- <name>Public Repositories</name>
- <url>http://172.28.189.138:8081/nexus/content/groups/public/</url>
- </pluginRepository>
- </pluginRepositories>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.1</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- </dependencies>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- </project>
将pom.xml保存后,再回过头来了看去nexus管理界面看,就会发现junit已经被下载到本地的nexus服务器中了。
今天在创建一个新的Maven项目时,在其中添加了很多依赖。刚开始为了避免错误就每添加一次,保存一下,Eclipse就会下载相应的包。最后为了加快速度就把剩下的包全部添加了,再次保存就出现了Missing artifact错误,就连以前正常的包也出现了这个问题。
于是一个个删除新添加的依赖,当删除了一个叫做quartz-all的依赖后,一切都正常了。然后把其他依赖都添加上,也是正常的。于是去本地的repository查看quartz-all的详细信息,发现里面只有一个quartz-all.jar,而其他目录同时还包含一个相应的pom文件。初步判定是这里的问题。然后去远程的仓库查看,也没有pom文件。忽然想起来,上传本地依赖到nexus私服时,可以自动产生相应地的pom。于是就把本地已经下载quartz-all.jar上传到nexus中,然后在项目中引用这个依赖。问题解决。
总结:
问题现象:Maven下载依赖时,出现Missing artifact错误提示
原因: 其中某一个或者几个依赖缺少pom文件
解决方法:将依赖包上传到maven私服中,然后引用新的依赖。
##############################################################
http://www.cnblogs.com/meiyuanbao/archive/2012/03/31/2426629.html
持续集成环境就是我们开发的时候,有一套环境自动编译、打包、测试、部署、发布的环境。
- 构建工具使用maven,在pom.xml中需要配置一个profile,内容如下:
<profiles>
<profile>
<id>deploytoweblogic</id>
<dependencies>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.0.b2</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>prepare-package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/weblogic</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>10.3.4</version>
<configuration>
<adminurl>10.67.1.1:8080/webmis</adminurl>
<user>admin</user>
<password>admin123</password>
<upload>true</upload>
<action>redeploy</action>
<remote>false</remote>
<verbose>true</verbose>
<source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
<name>ctrading2</name>
<delete_files>true</delete_files>
</configuration>
<executions>
<execution>
<id>DeployToRemoteContainer</id>
<phase>install</phase>
<goals>
<goal>redeploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
需要注意三个地方,
(1)红色配置部分是增加一个依赖,防止与weblogic的jar冲突。如果没有,会报异常java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
(2)灰色部分是hudson用来发送到weblogic需要执行的插件,执行阶段是install。
(3)中间蓝色部分是在安装时覆盖资源用的。因为开发环境和部署环境使用的数据源是不一样的,所以在发布时需要使用非开发的数据源。部署环境数据源文件如下:
<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- dataSource -->
<!-- WebLogic JNDI -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="wls_ots_ds" />
</bean>
<!-- Query Data Source -->
<!-- WebLogic JNDI -->
<bean id="dataQuerySource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="wls_ots_query_ds" />
</bean>
</beans>
这样客户端maven的工作就完成了,开发时和平常没有任何区别。
下面介绍hudson配置。
在hudson上添加项目就不说了,只说几个在配置时需要注意的点:
- source code managemante节点选择subversion,填写项目的svn地址。
- build trigger时选择第三项,在schedule中填入周期,如“0 2 * * *”表示每天2点执行构建。
- build节点的Goals and options填入clean install -DskipTests=true –Pdeploytoweblogic 表示使用maven进行构建,忽略测试,使用deploytoweblogic执行部署。
- 在build节点点击advanced,在MAVEN_OPTS输入-Xms512m -Xmx2048m -XX:MaxPermSize=512m。这是因为hudson使用maven构建会占用大量内存,可能会造成内存不足。
剩下的就是weblogic的配置了,那就很简单了,指定数据源即可。
================================================================
http://blog.sina.com.cn/s/blog_92381692010144fn.html
从weblogic 10.3.4开始支持maven deploy部署
步骤如下:
1.构建weblogic-maven-plugin jar
在D:\oracle\Middleware\wlserver_12.1\server\lib
找到 WebLogic JarBuilder Tool (wljarbuilder),执行:
java -jar wljarbuilder.jar -profile weblogic-maven-plugin
2.将weblogic-maven-plugin jar中的pom.xml 解压出放入到在
D:\oracle\Middleware\wlserver_12.1\server\lib
可以使用命令:
jar xvf D:/oracle/Middleware/wlserver_12.1/server/lib/weblogic-maven-plugin.jar
META-INF/maven/com.oracle.weblogic/weblogic-maven-plugin/pom.xml
cp D:/oracle/Middleware/wlserver_12.1/server/lib/META-INF/maven/com.oracle.weblogic/
weblogic-maven-plugin/pom.xml D:/oracle/Middleware/wlserver_12.1/server/lib
3.安装插件:
一种将weblogic-maven-plugin.jar 和pom.xml上传到nexus的第三方库中
另一种执行mvn install:install-file -Dfile=weblogic-maven-plugin.jar -DpomFile=pom.xml
进行安装。这个时候在你的本地仓库能到找.m2\repository\com\oracle\weblogic
4.在当前需要上传的应用的pom中配置weblogic的相关配置
比如:
<!--auto deploy war to weblogic by maven-->
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>10.3.6.0</version>
<configuration>
<adminurl>t3://192.168.2.141:9001</adminurl>
<user>weblogic</user>
<password>123456</password>
<upload>true</upload>
<action>deploy</action>
<remote>false</remote>
<verbose>true</verbose>
<source>target/demo.war</source>
<name>demo</name>
</configuration>
<!--
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
-->
</plugin>
<!-- end-->
先打包生成demo.war,然后执行>mvn com.oracle.weblogic:weblogic-maven-plugin:deploy
主要官方提供的命令是:mvn weblogic:deploy; 其实你敲这个命令你会发现,他用的不是oracle的plugin
而是用的 org.codehaus.mojo的
此外如果需要提前命令,可以用help来查看,查看结果:
『
---
The following are the goals available currently in Maven
deploy
list-apps
redeploy
start-app
stop-app
undeploy
update-app
』
执行成功后,回到weblogic的console台,你能发现你的war包,同时可以访问看是否部署成功。Development
如果想直接一个命令部署怎么办? 直接在mvn命令后面加上package
mvn package com.oracle.weblogic:weblogic-maven-plugin:deploy
但是他报错:
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.oracle.weblogic:weblogic-maven-plugin:10.3.6.
0:deploy (default-cli) on project ep-easyui-webapp: weblogic.deploy.api.tools.de
ployer.DeployerException: Java heap space -> [Help 1]
[ERROR]
原因是jdk 内存不够
为mvn设置内存,在maven.bat上加上
set MAVEN_OPTS=-Xdebug -Xnoagent -Xms256m -Xmx512m -Djava.compiler=NONE
这句话本身是@rem有。
然后直接
mvn package com.oracle.weblogic:weblogic-maven-plugin:deploy
就是能成功。
参考文献:
http://docs.oracle.com/cd/E24329_01/web.1211/e24443/maven_deployer.htm
主要10.3以后好像才有这个支持http://www.qqqdown.com/ ,另外12g和11g也有区别。
http://blog.csdn.net/adparking/article/details/5797823
一、所用开发工具
1. Hudson: Hudson 是一种革命性的开放源码 CI 服务器,它从以前的 CI服务器吸取了许多经验 教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的CI 服务器。Hudson 容易使用的第二个原因是它具有强大的插件框架 ,所以很容易添加特性,例如添加tomcat插件后,可以方将build好的war包方便的部署到Tomcat里。下载地址:http://hudson-ci.org/
2. Maven2:Maven 是一个顶级的 Apache Software Foundation 开源项目,创建它最初是为了管理 Jakarta Turbine 项目复杂的构建过程。从那以后,不论是开源开发项目还是私有开发项目都选择 Maven 作为项目构建系统。下载地址:http://maven.apache.org/download.html
3. Subversion(svn):版本控制软件,和它功能相似的工具有cvs,perforce等。下载地址:http://www.subversion.org.cn/
4. Hudson的自动部署插件,下载地址::https://hudson.dev.java.net/files/documents/2402/106347/deploy.hpi
二、工具的安装及设置
1. Maven2的安装:把maven-2.0.4-bin.zip解压到D:/maven-2.0.4(或者你自己想解压的位置,我是如此配置的)下面就是配置环境变量了,这和1.0的版本是一样的。(1)MAVEN_HOME:D:/maven-2.0.4 (2)在Path 中加入%MAVEN_HOME%/bin
这样配置就OK了。测试是否安装成功,可以在命令行下输入mvn -v,出现如下界面,说明安装成功
2. Hudson的安装:Hudson的安装有两种方式(1)可以将Hudson部署到Tomcat下面运行,将下载的hudson.war直接放到Tomcat的webapp下,启动tomcat就ok了
(2)可以使用命令启动hudson。步骤:首先下载hudson.war,然后可以在一个盘符下建立一个文件夹,如D:/hudson(自己可以随意建立),然后将这个路径设置环境变量(别说你不会设置环境变量哦),Hudson_Home=D:/hudson,最后使用命令java -jar hudson.war启动hudson
3. Svn的安装:svn的安装比较简单,下载好安装文件后,一路next即可。
三、Maven2+Hudson+Svn的集成
这里比较重要了,这三样的结合主要就是在这里来进行配置的,而Maven2和Svn的配置都是依赖于Hudson的,所以重点讲讲Hudson的配置
1. Hudson的配置
用上述的Hudson的安装方法安装好Hudson后,就可以通过浏览器http://localhost:8080/hudson来打开Hudson的页面了,如下(如果你已经build过工程的话,会在这里显示出来哪些成功了,哪些失败了)
2. Hudson的全局配置
接下来要对Hudson进行全局设置了,点击左边列表菜单Manage Hudson,然后点击Configure System。可以对hudson进行系统配置,包括全局路径和变量设置等。如下图
(1):System Message 当然了这是表面的东西啦,你可以写点随意的东西,比如HelloHudson啊,然后弄个Logo图片什么的,它也支持HTML语言,可以把这个欢迎界面弄的相当漂亮,不详述。
(2):Quiet period 这个值是表示你可以让你的构建有等待时间,以防止在提交代码的过程中去开始构建。这里是全局的变量,我习惯在每个项目里面去设定,因为我使用hudson搭建的项目有SVN的还有VSS的,这个等待时间的值肯定会不一样。(如果你想在这里设置可以查看右边的“帮助”)
(3):Enable security 这里是hudson权限的相应设置,选择该项后,如下图:
这里可以保留默认设置,如果你想对每个用户进行相应的权限操作,选择Authorization项下的Project-based Matrix Authorization Strategy这个选项就可以进行相应的设置了,如下图所示:
这里可以保留默认设置,如果你想对每个用户进行相应的权限操作,选择Authorization项下的Project-based Matrix Authorization Strategy这个选项就可以进行相应的设置了,如下图所示:
(4)Global properties这块设置默认即可
(5)Maven这里的设置,就是取个名字,然后路径中指定maven2的解压路径。如下图所示
在这里设置时,我一般去掉Install automatically,而是直接指定MAVEN_HOME,我的maven是装在C:/Program Files/apache-maven-2.2.1-bin/apache-maven-2.2.1(依个人设置)这里的,直接填入即可。
(6)JDK设置
Jdk的设置是必须的,如果你在这里没有设置jdk的路径的话,在build工程的时候有可能会报这个错误,如下图所示,
所以正确的设置也是去掉Install automatically选项,直接填写名称和 JAVA_HOME
我的JAVA_HOME是安装在C:/Java/jdk1.6.0_02这里的,所以直接填入即可。填写好的JDK设置如下图:
(7)shell,Ant,Maven,CVS等等,这些可以不用设定。这里就不做介绍啦,如果想了解的更深,右边的“help”(右边的蓝色小问号)会有很大的帮助。
(8):E-mail Notification 这个主要是邮件提醒,可以不用设置,要感兴趣的话,可以这样设置,具体参考右边的蓝色小问号。
SMTP server-->mail服务器地址(127.0.0.1)
Default user e-mail suffix-->邮件的后缀名(@123.com)
System Admin E-mail Address-->管理员用户的邮件帐号123@123.com
Hudson URL-->访问hudson的URL(http://127.0.0.1:8080)
至此,Hudson的全局配置就差不多了…...
3. 开始创建job
点击左侧列表菜单的New Job,出现如下界面
填写Job name,然后选中Build a maven2 project,依个人项目设定,这里讲Maven2的工程,点击OK按钮。进入job的设置页面(这里是重点,在这里我们可以看到Hudson的伟大,如何将Maven2的工程以及Svn集成起来)如下图所示
(1): Project Name 在你建立项目的时候已经取过名字了,TestJob.如果你哪天想改名字,就在这里改就可以了.
(2): Description 这里主要是写对TestJob这个项目的描述,可以写项目的参与者,项目起止日期等等,可以说这个地方是美化界面+项目描述+提示信息等等,我对于界面美化没有太多的要求,这个就留给大家去研究啦.
(3): Discard Old Builds 建议开启这个选项(hudson有一个选项,可以从SVN上check out项目,但这个项目的位置好像只能是%hudson_home%/jobs/projectname/workspace下面,本人认为这是一个不合理的方式,因为很正常的大家都会在自己的目录下建立项目后,然后再用hudson去构建环境。
Advanced Project Options: 这里是表示你可以对你的项目构建进行一定的设置,它下面包括两个小的选项,
(1).Quiet period: 时间可以根据项目的需要来设定。哦,差点忘了,这里的这个时间是说明从构建开始到项目真正开始构建之间的时间差,比如,我将此时间设为300S,说明TestJob在要开始构建之前会有5分钟的时间缓冲,这个是非常人性化的,因为如果有大量的代码需要提交,会需要很长时间,如果没有等待时间的话很容易出现少代码的情况导致整个构建过程的失败。
(2).Use custom workspace:这个地方你可以将可以对外公布的东西放在一个特定的目录下,然后把这里的值设成该目录,如:D:/hudson/jobs/TestJob/builds这样的话,这个目录下的东西是就公共的了。
Source Code Management:呵呵,这里就是要结合版本控制工具的地方了,这里就看你选用的是那种工具了,我用的是svn,所以设置如下
在Repository URL里填入你的仓库地址,svn有两种地址,一种是http://.....这样的,一种是svn://......的,我这里是用的第二种方式,所以填入svn://192.168.0.245:56581/mydemo
(注意,这里是工程的根目录,也就是pom.xml所在的目录,你可不要填写成svn://192.168.0.245:56581/demo/src等的目录了。要注意哦!!!)
Use update: 这里选项勾上后,每次检测到库上有更新,就会使用svn update命令;如果没有勾上的话,那每次使用的是svn checkout命令,理由是update要比checkout命令省相当多的时间。
Build Triggers:可以理解为你想以什么样的方式去触发你的构建,以其它构建成功后为基础,还是周期性的构建,还是根据poll SCM(变更触发)来触发构建。
我习惯选择 Build periodically,并在Schedule中输入 0 12,20 * * *。
注: Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,具体参考右面的蓝色小问号
0 12,20 * * * 表示在任何年任何月的任何天的12和20点的0分 进行构建
Build和Build Settings没有什么特殊的设置,可以不用设置
Post-build Actions:这里也可以说是做一些发布啊,善后啊之类的,可以看到有mail, artifacts, publish之类的。
☆Hudson的自动部署:
一般我们build成功一个项目后,Hudson会在%Hudson_home%/jobs/projecct_name/ workspace/ projecct_name/ target下发布一个项目的war包。(注释:project_name是你的项目名称,Hudson_home一般在C:/Documents and Settings/username/.hudson下。其中username是你当前的系统用户,有来宾账户或者administrator等。呵呵,注释是不是很无聊啊,为普及用,见谅。)但是我们想build成功后,就要看到我们项目进展的怎么样了,就想通过Tomcat来加载这个war包直接看效果,这时,我们不得不手动的把这个war包拷贝到Tomcat的webapp下,然后启动Tomcat。很麻烦吧,这里介绍的就是这种简单的自动部署方法,可以通过Hudson的一个插件,呵呵,现在前面提到的那个插件就起大作用了。点击左侧列表菜单Manage Hudson,然后选择第三项Manage Plugins,这个选项的功能是管理Hudson插件的,(或者直接输入:http://localhost:8080/hudson/pluginManager/)在这里说明了Hudson的扩展性有多么的强大,在插件管理中心点击Advanced,在upload plugin 中上传刚才下载的插件,上传完毕后需要重启hudson才能完成安装(即重启tomcat),重启后点击New Job后,然后建立一个新的Job时(已有的项目,直接点击进入项目,然后点左侧的功能菜单configure),在配置页面的Post-build Actions项下面会多出一项功能:Deploy war/ear to a container,在这里WAR/EAR file:就是填写hudson所打好的war包路径,之前说过,hudson打好的war包是放在这里的,所以这里就写%Hudson_home%/jobs/projecct_name/ workspace/ projecct_name/ target/你的war文件的名称.war。Container选择你的Tomcat的版本。Manager user name:填写Tomcat的用户名,默认是admin, Manager password:填写Tomcat的密码,默认是空。Tomcat URL:填写http://localhost:8080/就ok了,至此保存就可以了,这样,当你再build此工程的时候,war文件会自动部署到你的tomcat的webapp目录下。设置如下图所示
Ok,最基本的快速的配置到这里就完了,大家觉得有用或者有问题的话,记得留言哦!!!!
====================================================================
http://www.51testing.com/?uid-85467-action-viewspace-itemid-815259
一: 什么是Hudson.
Hudson 是一种革命性的开放源码 CI 服务器,它从以前的 CI服务器吸取了许多经验 教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的CI 服务器。Hudson 容易使用的第二个原因是它具有强大的插件框架 ,所以很容易添加特性。例如,一个 Hudson 插件可以随时间的推移跟踪FindBugs 和代码覆盖。它还可以报告测试结果的趋势(来自 JUnit 或 TestNG)以及构建结果和对应的执行时间。
Hudson 需要运行 Java 5。如果需要使用 Hudson 附带的嵌入式容器(Winstone)之外的其他容器,那么只需使用一种 Servlet 2.4 容器。对于大多数情况,Winstone 就足够了。运行Hudson有两种方式: 1.可以将Hudson部署到Tomcat下面运行, 具体部署方法 为......................................................................................................................2. 可以使用命令启动hudson。步骤:首先下载hudson.war(https://hudson.dev.java.net),然后可以在一个盘符下建立一个文件夹,如D:\hudson,然后将这个路径设置环境变量,Hudson_Home=D:\hudson,最后使用命令java -jar hudson.war启动hudson.2 a9 {" \8 _+ w! _
我在使用hudson的过程中使用的第二种方法来运行hudson的,下面进行逐一的介绍:
启动界面如下(http://localhost:8080) , h9 h' U, c( t! g0 `
一)首先对hudson进行整体的配置:选择Manage Hudson按钮,进入下一个界面" m2 g6 w! D" C7 p
Configure System: 可以对hudson进行系统配置,包括全局路径和变量设置等。如下图
1):System Message 当然了这是表面的东西啦,比如你可以写成 o,hi,hello,how are you,thank you,什么什么之类的,它也支持HTMl语言,可以把这个欢迎界面弄的相当漂亮。我是比较懒的那种人,所以嘛......嘿嘿!! p& X7 A: A. E9 x/ e
2):Quiet period 这个值是表示你可以让你的构建有等待时间,以防止在提交代码的过程中去开始构建。这里是全局的变量,我习惯在每个项目里面去设定,因为我使用hudson搭建的项目有SVN的还有VSS的,这个等待时间的值肯定会不一样。(如果你想在这里设置可以查看右边的“帮助”)
3):Enable security 这里是hudson权限的相应设置,选择该项后,如下图: 4 c/ w5 L: t; l+ z
TCP port for JNLP slave agents:可以设定JNLP的端口,我的选择是Disable3 {9 g$ l( V) t! R8 h
其它选项如下: ' y9 k k% `$ y" i& w
# L. t/ {8 N4 O7 X5 M
Project-based Matrix Authorization Strategy 这里可以设置项目参与者每个人不同的权限,如Read,Delete,Configure,Create等。5 q4 ]) G' ?% _4 ^
4):JDKs,shell,Ant,Maven,CVS等等,这些可以在这里设定,也可以在你的XML(ant语句)配置文件里面设定。我的是在XML里面设好了的。这里就不做介绍啦,如果想了解的更深,右边的“help”会有很大的帮助。 我就不多说废话了。
5):E-mail Notification 这个还要多说什么吗?什么? 哦,那还是说一下吧.
SMTP server-->mail服务器地址(127.0.0.1)( a9 ^4 M( |) q, e3 S+ l/ V% P
Default user e-mail suffix-->邮件的后缀名(@123.com)
System Admin E-mail Address-->管理员用户的邮件帐号123@123.com; G3 `% ^* x0 G
Hudson URL-->访问hudson的URL(http://127.0.0.1:8080)
Manage Plugins:可以下载hudson支持的各种插件。如可以下载CVS Tagging Plugin FTP-Publisher Plugin Visual SourceSafe Plugin等等,我就不在这里做一一的介绍了,具体这些插件有什么作用,可以在下载界面看具体描述。(当然,你也可以通过设置代理去下载这些插件,个人觉得只要选择适用于自己项目的插件即可。)
Install as Windows Service:可以将hudson加载为Windows的服务,在每次启动Windows的时候可以启动hudson,我的服务器是不关机的,所以这项我没有用到,没有实验过具体怎么实现,但是我觉得应该很简单的哦。
Configure Executors Reload Configuration from Disk System Information System Log Script. Console Prepare for Shutdown这几项没有玩过的,不知道具体是干什么的,只是知道大概可以干些什么事。等有时间再去研究啦
行了吧?说的够详细了吧?还是不明白的话就找我吧,QQ:252285669: P- y1 x# g, ^+ d- G
以上就是对hudson的整体的配置啦,是不是相当的简单方便?至于项目的东西一会再写。休息休息
前面说到Hudson的整体配置, 现在来说下如何通过hudson去配置一个实际的项目, K, ?/ C* R! X" q
打开http://localhost:8080界面,可以看到左边有三个选项,分别为New Job Manage Hudson Build History选择New Job选项, 进入一个界面# ]1 }- N* S$ q0 R. e) N ! J* F' S/ L5 g, a
Job name取名为TestJob, 并选择Build a free-style. software project,其它几个(如Build a maven2 project等)要看根据项目的需要去适当选择,我是用ant来集成的一个构建环境,然后OK.
进入下一个界面
下面就又要开始一一介绍这个界面了,
一: Project Name 在你建立项目的时候已经取过名字了,TestJob.如果你哪天想改名字,就在这里改就可以了.
二: Description 这里主要是写对TestJob这个项目的描述,可以写项目的参与者,项目起止日期等等,可以说这个地方是美化界面+项目描述+提示信息等等,我对于界面美化没有太多的要求,这个就留给大家去研究啦.# [. p6 w5 `" A/ O0 l
三: Discard Old Builds 建议开启这个选项(hudson有一个选项,可以从SVN上check out项目,但这个项目的位置好像只能是%hudson_home%/jobs/projectname/workspace下面,本人认为这是一个不合 理的方式,因为很正常的大家都会在自己的目录下建立项目后,然后再用hudson去构建环境,关于这个选项我下面再说,很讨厌的东西),有个图示如下,& ^, y, h# W' c; c" o: U5 T* r
Days to keep builds: 是说你每次构建后的版本(可以在%hudson_home%/jobs/projectname/builds下面找到,如果你的目录下没有这个目录,说明你的构建还没有正式开始,即不存在构建记录),会保留的时长.: p6 i! E5 ~0 i# K1 F- I% Y% p; Z: h
Max # of builds to keep: 是说你要保留最多多少个构建出来的版本
四: This build is parameterized: 表示这个build是参数化的(目前为止我还没有用过这个选项,没有实践就没有发言权,我就不多说了),可以理解为在一个完整的构建中,这个构建过程需要依赖于某个第三方包,或者某个类,再或者某些特定的方法等.
五: Disable Build: 这个选项可以将某个构建项目临时性的停掉.比如我们有两个工程.TestJob和TestJob1,在两个工程启用一段时间后,TestJob1已经被临时性的停掉,但并不是真正意义上的废除。我们可以进入TestJob1配置界面,将此项选中即可。" C0 @" l0 e/ G& d8 S) W
六:Advanced Project Options: 这里是表示你可以对你的项目构建进行一定的设置,它下面包括两个小的选项,
1.Quiet period: 时间可以根据项目的需要来设定。哦,差点忘了,这里的这个时间是说明从构建开始到项目真正开始构建之间的时间差,比如,我将此时间设为300S,说明 TestJob在要开始构建之前会有5分钟的时间缓冲,这个是非常人性化的,因为如果有大量的代码需要提交,会需要很长时间,如果没有等待时间的话很容易 出现少代码的情况导致整个构建过程的失败。" E4 @) G7 i' T! m/ P+ X1 l# z
2.Use custom workspace:这个地方你可以将可以对外公布的东西放在一个特定的目录下,然后把这里的值设成该目录,如:D:\hudson\jobs\TestJob\builds这样的话,这个目录下的东西是就公共的了。4 a4 Q$ G. g- G% y; ]1 ~. Z
七:Source Code Management: 从名字上看就应该知道是什么意思了吧?
这个选项是源码管理,当然也有很多的源码管理工具供你选择了,如CVS,SVN还有Hudson的插件,如VSS等等,详细的可以参考上面的一项专门介绍如何使用hudson的plugin的。我们以Subversion(俗称SVN)为例,向简单说一下。
Modules Repository URL:这里是你要管理的代码在哪里的SVN库上(或者库的URL等等)。如:http;//127.0.0.1:8080/SVN/project/_test
Local module directory(optional): 这个是你要给你的项目选择一个本地的存放的目录,以我的实践经验来看。这个目录只是能在%Hudson_home%/jobs/projecct_name/下面的一个地方存储,而不能放到另外的盘符或者目录下。(如此处说明有误,本人洗耳恭听)。
Use update: 这里选项勾上后,每次检测到库上有更新,就会使用svn update命令;如果没有勾上的话,那每次使用的是svn checkout命令。熟悉SVN的人都知道,小项目的话这两个区别不大,但如果是大项目的话,update要比checkout命令省相当多的时间。; K9 w* N3 p* J x+ Q, ~9 C
Repository browser: 我也不知道这里是干嘛使的,没研究,反正每次我都会选择(Auto)选项。8 J! `0 a& j1 O y; W) O: s( ^
八:Build Triggers:可以理解为你想以什么样的方式去触发你的构建,以其它构建成功后为基础,还是周期性的构建,还是根据poll SCM(变更触发)来触发构建。 6 V/ H$ O3 T7 k$ E; t
一般选择一项即可,我使用的是poll SCM。第一项最简单,但对于大多数项目来说不太适用。它是根据TestJob这个工程所依赖的其它项目构建成功为基础,如TestJob要依赖于Test这个项目(包括jar包啊,环境啊什么的),然后在Projects names里面填写它所依赖于的项目名称即可,如Test;第二项,是周期性构建,Hudson提供了一种语法,可以查看后面的help,要在Schedule里面使用这个语法,如我写成* * * * *,这表示每分钟要构建一次,*/30 * * * *,则表示每隔30分钟进行一次构建。当然也可以设定年月日等日期;第三项是根据检测的更新去执行构建,Schedule的语法表示跟上面一样的,就不多说了。* B0 C% [" ?2 I7 b5 b
九:Build 这里是Hudson构建部分的正式开始,也是心脏。先看下面几个图吧。
我的项目是使用ant来实现的,当然我就选择Invoke Ant选项,从这里来看,好像你 可以自己在这个界面上直接定义ant语法,我的是有专门的ant文件去执行某个target, 也有一个总的build.xml将这些target连接起来,还自己写义了上些的properties文件,可以使用ant直接调用。里面定义了一些路径 啊,常量啊什么的。
Targets: 当然这里我可以选择任意的啦,也可以不填写这里。(上面说了我都有一个总的build.xml啦)
Build File: 选择我的build.xml所在的位置。% x2 }& {* ]' O/ L# y G! Q: _* r8 c
Properties: 如果是自己在Hudson里面写ant的话,这里可以对一些常量进行定义,如路径名等等。! Q2 ~* d% [+ T+ ]
Java Options: 去定义java在运行时的一些参数,如-Xmx512m等等。
十:Post-build Actions这里也可以说是做一些发布啊,善后啊之类的,可以看到有mail, artifacts, publish之类的。 ; Z- o/ p( A/ C* s3 I
我只说我用过的几个,别的我也没资格啦。
Archive the artifacts 看下图
可以指定archive的路径,如D:\hudson\jobs\TestJob\builds, Excludes可以排除上些你不想成为archive的东西,如*.bak,*.zip之类的。: N. w& k" C T: H9 j. d+ i
Discard all but the last successful/stable artifact to save disk space这个选项可以要也可以不要,但是如果你硬盘够大的话,这个选项还是不要勾的好,这样还可以去查看artifacts的历史。8 W& a' W% v4 E' h+ e! X
Build other projects看下图0 u$ Z4 }" b3 `% y Q/ o( Q) ]7 |& j" d
这里和上面的第八大节里面的Build Triggers的Build after other projects are built有一个承上启下的作用。可以定义在这个项目构建成功后去构建哪几个项目。Trigger even if the build is unstable建议项目之间依赖特别强的不要勾此选项,如果依赖不是特别强的话可以选择此项以保证构建的持续性。$ c4 i; `: x, q# P/ Y
E-mail Notification看下图8 \* H+ A% z2 c0 p2 n - v- Y- l# U5 s$ ^
Recipients:填写收信的地址,下面有两个选项,建议两个都要选上,第一个是为每个 不稳定的构建都要发mail通知相关的人,看来Hudson的开发者也相信no news is good news 第二个是一个比较好的想法,但是我觉得做的还不够完美,这是给两次构建之间,对project进行修改过的所有的人都发一封mail,以告诉他们当前版 本构建失败,速度改正错误。
http://www.cnblogs.com/IAmYmir/archive/2012/05/16/2504427.html
2.Hudson的安装:Hudson的安装有两种方式:
3.Hudson的配置
http://dl.iteye.com/upload/attachment/430718/8d317001-b71f-397d-9098-a11720853310.jpg
配置如图片:
biz4_Config_Hudson_.jpg , brand_Config_Hudson_.jpg