我们有一个场景,要求有一个系统能自动更新svn,编译打war包,这时候我们使用hudson+她的svn插件+ant
1.基础环境
drwxrwxr-x 5 srtboss srtboss 4096 Jul 9 09:27 AntBuild
drwxr-xr-x 6 srtboss srtboss 4096 May 15 22:36 apache-ant-1.9.1
-rw-rw-r-- 1 srtboss srtboss 8241998 May 22 10:26 apache-ant-1.9.1-bin.zip
drwxr-xr-x 9 srtboss srtboss 4096 Feb 12 22:45 apache-tomcat-7.0.37
-rw-r--r-- 1 srtboss srtboss 8320951 Mar 18 09:34 apache-tomcat-7.0.37.zip
-rw-r--r-- 1 srtboss srtboss 4440 Jun 26 15:34 build.bak
-rw-r--r-- 1 srtboss srtboss 4442 Jul 1 18:20 build.bak.20130701
-rw-r--r-- 1 srtboss srtboss 4656 Jul 2 12:17 build.bak.20130702
-rw-r--r-- 1 srtboss srtboss 3438 Jul 9 08:31 build.bak.20130709
-rw-r--r-- 1 srtboss srtboss 3451 Jul 9 09:17 build.xml
-rw-r--r-- 1 srtboss srtboss 49760685 Jun 25 20:10 jdk-1_5_0_22-linux-i586.bin
-rw-r--r-- 1 srtboss srtboss 85315136 Jan 31 2012 jdk-6u25-linux-x64.bin
drwxr-xr-x 9 srtboss srtboss 4096 Oct 9 2009 jdk1.5.0_22
drwxr-xr-x 10 srtboss srtboss 4096 Jun 25 19:58 jdk1.6.0_25
drwxrwxr-x 5 srtboss srtboss 4096 Jul 9 09:27 AntBuild
drwxr-xr-x 6 srtboss srtboss 4096 May 15 22:36 apache-ant-1.9.1
-rw-rw-r-- 1 srtboss srtboss 8241998 May 22 10:26 apache-ant-1.9.1-bin.zip
drwxr-xr-x 9 srtboss srtboss 4096 Feb 12 22:45 apache-tomcat-7.0.37
-rw-r--r-- 1 srtboss srtboss 8320951 Mar 18 09:34 apache-tomcat-7.0.37.zip
-rw-r--r-- 1 srtboss srtboss 4440 Jun 26 15:34 build.bak
-rw-r--r-- 1 srtboss srtboss 4442 Jul 1 18:20 build.bak.20130701
-rw-r--r-- 1 srtboss srtboss 4656 Jul 2 12:17 build.bak.20130702
-rw-r--r-- 1 srtboss srtboss 3438 Jul 9 08:31 build.bak.20130709
-rw-r--r-- 1 srtboss srtboss 3451 Jul 9 09:17 build.xml
-rw-r--r-- 1 srtboss srtboss 49760685 Jun 25 20:10 jdk-1_5_0_22-linux-i586.bin
-rw-r--r-- 1 srtboss srtboss 85315136 Jan 31 2012 jdk-6u25-linux-x64.bin
drwxr-xr-x 9 srtboss srtboss 4096 Oct 9 2009 jdk1.5.0_22
drwxr-xr-x 10 srtboss srtboss 4096 Jun 25 19:58 jdk1.6.0_25
2.hudson系统配置
jdk /home/srtboss/jdk1.6.0_25
ant /home/srtboss/apache-ant-1.9.1
3.任务配置
Source Code Management
Repository URL http://192.168.13.49/SRT_svn/srt_boss/02_Branches/2.8/srt_boss
【系统配置】
Source Code Management
Repository URL http://192.168.13.49/SRT_svn/srt_boss/02_Branches/2.8/srt_boss
【系统配置】
4.最重要的文件build
非常完美的解决了 编译打包这个问题
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="/home/srtboss/.hudson/jobs/boss2/workspace" default="publish">
<target name="init">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<property name="tragetdir" value="/home/srtboss" />
<property name="version" value="0.2" />
<property name="year" value="2006" />
<property name="debug" value="off" />
<property name="optimize" value="on" />
<property name="deprecation" value="on" />
非常完美的解决了 编译打包这个问题
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="/home/srtboss/.hudson/jobs/boss2/workspace" default="publish">
<target name="init">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<property name="tragetdir" value="/home/srtboss" />
<property name="version" value="0.2" />
<property name="year" value="2006" />
<property name="debug" value="off" />
<property name="optimize" value="on" />
<property name="deprecation" value="on" />
<property name="src.dir" value="${basedir}/src-boss" />
<property name="webapp.dir" value="${basedir}/WebRoot" />
<property name="build.src" value="${tragetdir}/AntBuild/build" />
<property name="build.dest" value="${tragetdir}/AntBuild/bin" />
<property name="buildwar.dest" value="${tragetdir}/AntBuild/warsrc" />
<property name="build.javadocs" value="${tragetdir}/AntBuild/doc" />
<property name="jar.dest" value="${tragetdir}/AntBuild/jar" />
<property name="war.dest" value="${tragetdir}/AntBuild/war" />
<!--classpath-->
<property name="tomcat.home" value="/home/srtboss/apache-tomcat-7.0.37"/>
<property name="lib.dir" value="${basedir}/WebRoot/WEB-INF/lib" />
<path id="classpath">
<fileset dir="${tomcat.home}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
</target>
<property name="webapp.dir" value="${basedir}/WebRoot" />
<property name="build.src" value="${tragetdir}/AntBuild/build" />
<property name="build.dest" value="${tragetdir}/AntBuild/bin" />
<property name="buildwar.dest" value="${tragetdir}/AntBuild/warsrc" />
<property name="build.javadocs" value="${tragetdir}/AntBuild/doc" />
<property name="jar.dest" value="${tragetdir}/AntBuild/jar" />
<property name="war.dest" value="${tragetdir}/AntBuild/war" />
<!--classpath-->
<property name="tomcat.home" value="/home/srtboss/apache-tomcat-7.0.37"/>
<property name="lib.dir" value="${basedir}/WebRoot/WEB-INF/lib" />
<path id="classpath">
<fileset dir="${tomcat.home}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
</target>
<target name="prepare-src" depends="init">
<mkdir dir="${build.src}" />
<mkdir dir="${build.dest}" />
<mkdir dir="${jar.dest}" />
<mkdir dir="${war.dest}" />
<mkdir dir="${buildwar.dest}" />
<copy todir="${build.src}">
<fileset dir="${src.dir}">
<include name="**/**" />
</fileset>
</copy>
<copy todir="${buildwar.dest}">
<fileset dir="${webapp.dir}">
<include name="**/**"/>
</fileset>
</copy>
</target>
<mkdir dir="${build.src}" />
<mkdir dir="${build.dest}" />
<mkdir dir="${jar.dest}" />
<mkdir dir="${war.dest}" />
<mkdir dir="${buildwar.dest}" />
<copy todir="${build.src}">
<fileset dir="${src.dir}">
<include name="**/**" />
</fileset>
</copy>
<copy todir="${buildwar.dest}">
<fileset dir="${webapp.dir}">
<include name="**/**"/>
</fileset>
</copy>
</target>
<target name="build" depends="prepare-src">
<javac encoding="UTF-8" srcdir="${build.src}" destdir="${buildwar.dest}/WEB-INF/classes" source="1.6" target="1.6" optimize="off" nowarn="true">
<classpath refid="classpath"/>
</javac>
</target>
<javac encoding="UTF-8" srcdir="${build.src}" destdir="${buildwar.dest}/WEB-INF/classes" source="1.6" target="1.6" optimize="off" nowarn="true">
<classpath refid="classpath"/>
</javac>
</target>
<target name="srt-boss.war" depends="build">
<war warfile="${war.dest}/srt-boss.war" webxml="${buildwar.dest}/WEB-INF/web.xml">
<lib dir="${buildwar.dest}/WEB-INF/lib"/>
<classes dir="${buildwar.dest}/WEB-INF/classes"/>
<fileset dir="${buildwar.dest}">
<exclude name="WEB-INF/" />
</fileset>
</war>
</target>
<war warfile="${war.dest}/srt-boss.war" webxml="${buildwar.dest}/WEB-INF/web.xml">
<lib dir="${buildwar.dest}/WEB-INF/lib"/>
<classes dir="${buildwar.dest}/WEB-INF/classes"/>
<fileset dir="${buildwar.dest}">
<exclude name="WEB-INF/" />
</fileset>
</war>
</target>
<target name="publish" depends="srt-boss.war,clean">
<copy todir="${tomcat.home}/webapps">
<fileset dir="${war.dest}" >
<include name="**/*.war"/>
</fileset>
</copy>
</target>
<copy todir="${tomcat.home}/webapps">
<fileset dir="${war.dest}" >
<include name="**/*.war"/>
</fileset>
</copy>
</target>
<target name="javadoc" depends="build">
<mkdir dir="${build.javadocs}" />
<javadoc packagenames="${packages}" sourcepath="${build.src}" destdir="${build.javadocs}" author="true" version="true" use="true" splitindex="true" windowtitle="${Name} API" doctitle="${Name}">
<classpath refid="classpath" />
</javadoc>
</target>
<mkdir dir="${build.javadocs}" />
<javadoc packagenames="${packages}" sourcepath="${build.src}" destdir="${build.javadocs}" author="true" version="true" use="true" splitindex="true" windowtitle="${Name} API" doctitle="${Name}">
<classpath refid="classpath" />
</javadoc>
</target>
<target name="clean" depends="init">
<delete dir="${build.src}"/>
<delete dir="${build.dest}/org"/>
<delete dir="${build.dest}/com"/>
<delete dir="${buildwar.dest}"/>
<delete>
<fileset dir="${build.dest}" includes="**/*.class"/>
</delete>
</target>
</project>
我们这里使用eclipse的javac编译器 org.eclipse.jdt.core.JDTCompilerAdapter,接着我们可以享受自动化编译的好处了,设置定时任务自动去更新svn,自动编译吧,抛弃落后的手工打包过程。
<delete dir="${build.src}"/>
<delete dir="${build.dest}/org"/>
<delete dir="${build.dest}/com"/>
<delete dir="${buildwar.dest}"/>
<delete>
<fileset dir="${build.dest}" includes="**/*.class"/>
</delete>
</target>
</project>
我们这里使用eclipse的javac编译器 org.eclipse.jdt.core.JDTCompilerAdapter,接着我们可以享受自动化编译的好处了,设置定时任务自动去更新svn,自动编译吧,抛弃落后的手工打包过程。