现在的位置: 首页 > 综合 > 正文

利用ant从svn更新项目编译打包并发布项目的脚本

2018年04月22日 ⁄ 综合 ⁄ 共 4304字 ⁄ 字号 评论关闭

        最近在研究项目自动构建方面的东西,第一个目标是利用ant脚本从资源库checkout源代码编译打包复制到tomcat webapp下面然后发布项目。目前已经实现,记录一下相关的东西。 相关资源和代码主要来自网络,然后自己修改调试通过,然后再完善一下一些细节的说明,希望对有需要的人有帮助,因为整个过程前后拖了很多时间,可能步骤已经不太完全,如果在过程中遇到什么异常请跟帖说明。

       

相关资源下载.

1 下载ant

http://ant.apache.org/bindownload.cgi

将bin加入PATH环境变量

2 下载svnant

http://subclipse.tigris.org/svnant.html

3 下载subversion

http://subversion.apache.org/packages.html

将bin加入PATH环境变量

4下载tomcat

http://tomcat.apache.org/download-60.cgi

配置CATALINA_HOME环境变量为tomcat安装目录

<project basedir="." name="tpo" default="auto">
    <!-- 所有的参数都在build.properties文件 -->
    <property file="build.properties" />

    <!--svnant支持库-->
    <path id="svnant.lib">
        <pathelement location="${svnjavahl.jar}" />
        <pathelement location="${svnant.jar}" />
        <pathelement location="${svnClientAdapter.jar}" />
    </path>

    <!--项目的classpath库 -->
    <path id="project.classpath">
        <pathelement location="${build.dir}" />
        <fileset dir="${lib.dir}" />
    </path>

    <!--清理tomcat下面之前部署的项目 -->
    <target name="clear">
        <delete dir="${tomcat.home}/work/Catalina/localhost/${ant.project.name}" />
        <delete dir="${tomcat.home}/webapps/${ant.project.name}" />
        <delete dir="${tomcat.home}/webapps/${ant.project.name}.war" />
    </target>

    <!-- load the svn task -->
    <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" />

    <!--svn同步任务-->
    <target name="svn" depends="clear">
        <mkdir dir="${work.space}"/>
        <svn username="${svn.username}" password="${svn.password}" javahl="false">
            <checkout url="${svn.url}" destPath="${work.space}" />
        </svn>
    </target>

    <!--编译-->
    <target name="compile" depends="svn" description="======compile project======">
        <echo message="compile==========>${ant.project.name}: ${ant.file}" />
        <mkdir dir="${build.dir}" />
        <copy includeemptydirs="false" todir="${build.dir}">
            <fileset dir="${java.source}" excludes="**/*.launch, **/*.java, config/*.*"/>
        </copy>
        
        <javac includejavaruntime="true" debug="true" debuglevel="${debuglevel}" destdir="${build.dir}" source="${source}" target="${target}" encoding="utf-8">
            <src path="${java.source}" />
        <src path="E:/antTest/tpo/src-framework"/>
        <src path="E:/antTest/tpo/src-org"/>
        <src path="E:/antTest/tpo/src-other"/>
        <src path="E:/antTest/tpo/src-example"/>
            <classpath>
                <path refid="project.classpath">
                </path>

            </classpath>
        </javac>

    </target>

    <!--压缩,打包-->
    <target name="war" depends="compile" description="======compress j2ee war file======">
        <mkdir dir="${dist.dir}" />
        <war destfile="${war.file}" webxml="${web.dir}/WEB-INF/web.xml">
            <fileset dir="${web.dir}" />
            <classes dir="${build.dir}" />
            <lib dir="${lib.dir}" />
        </war>
    </target>
    
    <!--关闭tomcat-->
    <target name="shutdowntomcat" description="========shutdowntomcat===========">
        <exec executable="${tomcat.home}/bin/shutdown.bat" failonerror="false"></exec>
        <sleep seconds="10"/>
    </target>
    
    <!--启动tomcat-->
    <target name="startuptomcat" description="========startuptomcat===========">
        <sleep seconds="5"/>
        <exec executable="${tomcat.home}/bin/startup.bat" failonerror="false"></exec>
    </target>

    <!--把项目war包复制到tomcat/webapps-->
    <target name="deploy" depends="war">
        <copy file="${war.file}" todir="${tomcat.home}/webapps" />
    </target>
    
    <!--关闭tomcat,部署,启动tomcat,如果tomcat在关闭状态直接执行deploy和startuptomcat-->
   <!-- <target name="auto" depends="deploy,startuptomcat">-->
    <target name="auto" depends="shutdowntomcat,deploy,startuptomcat">
        <echo message="DONE!!!!" />
    </target>
</project>

build.properties文件内容(里面相关路径修改为自己软件包在的路径)

build.version=1.0.0
svnant.jar=D:/Program Files/apache-ant-1.8.2/lib/svnant.jar
svnClientAdapter.jar=D:/Program Files/apache-ant-1.8.2/lib/svnClientAdapter.jar
svnjavahl.jar=D:/Program Files/apache-ant-1.8.2/lib/svnjavahl.jar
debuglevel=source,lines
target=1.6
source=1.6
work.space=E:/antTest/tpo
dist.dir=${work.space}
build.dir=${work.space}/WebRoot/WEB-INF/classes
lib.dir=${work.space}/WebRoot/WEB-INF/lib
java.source=${work.space}/src
java.config=${work.space}/src/config
web.dir=${work.space}/WebRoot
resource.dir=${work.space}/resources
tomcat.home=E:/antTest/tomcat7
war.file=${dist.dir}/${ant.project.name}.war
svn.url=XXXXXXXXXXXXX
svn.username=XXXXXXXXXXXXX
svn.password=XXXXXXXXXXXXX

遇到的异常 

1 svn命令找不到,可能很多人都装的那只乌龟,那个没有本地的svn命令的,到我上面列出的链接中区下载。

2 Unsupported major.minor version 51.0  我本地jdk是1.7的,兼容性问题,改成1.6了就解决了。

下一步的目标是使用一些持续集成(Continuous integration)工具来进一步让项目构建变得更容易。

抱歉!评论已关闭.